Skip to content

Commit

Permalink
Improvements:
Browse files Browse the repository at this point in the history
- All tests are successful
- Log4j changed to Log4j2 2.11.2
- Hibernate changed to is 5.4.18.Final
- SQLite changed to 3.32.3
  • Loading branch information
josueribeiro committed Jun 30, 2020
1 parent 39c1813 commit 54c3303
Show file tree
Hide file tree
Showing 8 changed files with 55 additions and 69 deletions.
32 changes: 13 additions & 19 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.blogspot.thedevside</groupId>
<groupId>com.acme</groupId>
<artifactId>sqlite-jpa</artifactId>
<version>1.0.0-SNAPSHOT</version>
<version>2.0.0</version>
<packaging>jar</packaging>

<name>sqlite-jpa</name>
<url>http://maven.apache.org</url>
<url>https://github.com/josueribeiro/sqlite-jpa</url>

<properties>
<maven.compiler.source>1.8</maven.compiler.source>
Expand All @@ -19,37 +19,31 @@

<dependencies>

<!-- Hibernate & JPA -->
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<version>1.0.0.Final</version>
</dependency>

<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>3.5.1-Final</version>
<artifactId>hibernate-core</artifactId>
<version>5.4.18.Final</version>
</dependency>

<!-- SQLite database JDBC -->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.7.2</version>
<version>3.32.3</version>
</dependency>

<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.11</version>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.2</version>
</dependency>

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.2</version>
</dependency>

<!-- Test -->
Expand Down
Binary file modified sqllite-database-test.db
Binary file not shown.
12 changes: 10 additions & 2 deletions src/main/java/com/acme/entities/Person.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,28 @@
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.TableGenerator;

/**
*
* @author josueribeiro
*/
@Entity
@Table(name = "person")
public class Person implements Serializable {

private static final long serialVersionUID = -7250234396452258822L;

@Id
@TableGenerator(name = "gen_person",
table = "table_keys",
pkColumnName = "name_table",
valueColumnName = "cod_key",
pkColumnValue = "person", allocationSize = 1, initialValue = 1)
@GeneratedValue(generator = "gen_person", strategy = GenerationType.TABLE)
@Column(name = "id_person")
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private Integer id;
private String name;
private Integer age;

Expand Down
27 changes: 9 additions & 18 deletions src/main/java/com/acme/util/SQLiteDialect.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,12 @@

import java.sql.Types;

import org.hibernate.Hibernate;
import org.hibernate.dialect.Dialect;
import org.hibernate.dialect.function.SQLFunctionTemplate;
import org.hibernate.dialect.function.StandardSQLFunction;
import org.hibernate.dialect.function.VarArgsSQLFunction;
import org.hibernate.type.IntegerType;
import org.hibernate.type.StringType;

/**
* @author josueribeiro@github.com
Expand Down Expand Up @@ -34,36 +35,26 @@ public SQLiteDialect() {
registerColumnType(Types.BINARY, "blob");
registerColumnType(Types.VARBINARY, "blob");
registerColumnType(Types.LONGVARBINARY, "blob");
// registerColumnType(Types.NULL, "null");
// registerColumnType(Types.NULL, "null");
registerColumnType(Types.BLOB, "blob");
registerColumnType(Types.CLOB, "clob");
registerColumnType(Types.BOOLEAN, "integer");

registerFunction("concat", new VarArgsSQLFunction(Hibernate.STRING, "", "||", ""));
registerFunction("mod", new SQLFunctionTemplate(Hibernate.INTEGER, "?1 % ?2"));
registerFunction("substr", new StandardSQLFunction("substr", Hibernate.STRING));
registerFunction("substring", new StandardSQLFunction("substr", Hibernate.STRING));
registerFunction("concat", new VarArgsSQLFunction(StringType.INSTANCE, "", "||", ""));
registerFunction("mod", new SQLFunctionTemplate(IntegerType.INSTANCE, "?1 % ?2"));
registerFunction("substr", new StandardSQLFunction("substr", StringType.INSTANCE));
registerFunction("substring", new StandardSQLFunction("substr", StringType.INSTANCE));

}

public boolean supportsIdentityColumns() {
return true;
}

/*
* public boolean supportsInsertSelectIdentity() { return true; // As specify in
* NHibernate dialect }
*/
public boolean hasDataTypeInIdentityColumn() {
return false; // As specify in NHibernate dialect
}

/*
* public String appendIdentitySelectToInsert(String insertString) { return new
* StringBuffer(insertString.length()+30). // As specify in NHibernate dialect
* append(insertString). append("; ").append(getIdentitySelectString()).
* toString(); }
*/

public String getIdentityColumnString() {
// return "integer primary key autoincrement";
return "integer";
Expand Down Expand Up @@ -111,7 +102,7 @@ public boolean supportsUnionAll() {
}

public boolean hasAlterTable() {
return false; // As specify in NHibernate dialect
return false;
}

public boolean dropConstraints() {
Expand Down
5 changes: 3 additions & 2 deletions src/main/java/import.sql
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
insert into Person (id_person,name, age) values (9, 'person1', 18);
insert into Person (id_person,name, age) values (10, 'person1', 18);
insert into person (id_person,name, age) values (9, 'person1', 18);
insert into person (id_person,name, age) values (10, 'person1', 18);
insert into person (id_person,name, age) values (11, 'Person to Remove', 18);
8 changes: 0 additions & 8 deletions src/main/java/log4j.properties

This file was deleted.

15 changes: 15 additions & 0 deletions src/main/java/log4j2.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
appender.console.type = Console
appender.console.name = LogToConsole
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n
#appender.console.layout.pattern = [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n

rootLogger.level = all
rootLogger.appenderRef.stdout.ref = LogToConsole

# Log to console
logger.app.name = com.acme
logger.app.level = debug
logger.app.additivity = false
logger.app.appenderRef.console.ref = LogToConsole

25 changes: 5 additions & 20 deletions src/test/java/com/acme/entities/PersonTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityNotFoundException;
import javax.persistence.Persistence;

import org.junit.After;
Expand All @@ -29,7 +28,6 @@ public static void setUp() {
@Before
public void initEntityManager() {
em = emf.createEntityManager();
em.getTransaction().begin();
}

@Test
Expand All @@ -39,6 +37,7 @@ public void testPersist() {
// Persist in database
Person person = new Person();
person.setName("person2");
em.getTransaction().begin();
em.persist(person);
em.getTransaction().commit();

Expand All @@ -62,6 +61,7 @@ public void testUpdate() {
person.setAge(22);

// Persist in database
em.getTransaction().begin();
em.merge(person);
em.getTransaction().commit();

Expand All @@ -80,7 +80,7 @@ public void testFindById() {
try {

// Find by id in database
Integer personId = 10;
Integer personId = 11;
Person person = em.find(Person.class, personId); // See file import.sql

Assert.assertEquals(personId, person.getId());
Expand All @@ -107,30 +107,14 @@ public void testFindByReference() {
}
}

@Test
public void testFindByReferenceEntityNotFound() {
try {

// Find by id in database
Integer personId = 111; // id not exists
Person person = em.getReference(Person.class, personId);

if (person.getId().equals(personId)) {
Assert.fail("A exception EntityNotFoundException should be throw");
}

} catch (EntityNotFoundException e) {
Assert.assertTrue(true);
}
}

@Test
public void testRemove() {
try {

// Find by id in database and remove
Integer personId = 10;
Person person = em.find(Person.class, personId); // See file import.sql
em.getTransaction().begin();
em.remove(person);
em.getTransaction().commit(); // TODO java.sql.SQLException: database is locked (sometimes)

Expand All @@ -148,6 +132,7 @@ public void testRemove() {
@After
public void closeEntityManager() {
em.close();
em = null;
}

@AfterClass
Expand Down

0 comments on commit 54c3303

Please sign in to comment.