Added DAO pattern.
This commit is contained in:
parent
33566805ee
commit
0bded40738
26
dao/pom.xml
Normal file
26
dao/pom.xml
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>com.iluwatar</groupId>
|
||||||
|
<artifactId>java-design-patterns</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
<artifactId>dao</artifactId>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.hibernate</groupId>
|
||||||
|
<artifactId>hibernate-core</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.h2database</groupId>
|
||||||
|
<artifactId>h2</artifactId>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>junit</groupId>
|
||||||
|
<artifactId>junit</artifactId>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
40
dao/src/main/java/com/iluwatar/App.java
Normal file
40
dao/src/main/java/com/iluwatar/App.java
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.hibernate.Query;
|
||||||
|
import org.hibernate.Session;
|
||||||
|
import org.hibernate.SessionFactory;
|
||||||
|
import org.hibernate.cfg.Configuration;
|
||||||
|
|
||||||
|
public class App
|
||||||
|
{
|
||||||
|
public static void main( String[] args ) {
|
||||||
|
|
||||||
|
SessionFactory sessionFactory = new Configuration()
|
||||||
|
.addAnnotatedClass(Wizard.class)
|
||||||
|
.addAnnotatedClass(Spellbook.class)
|
||||||
|
.addAnnotatedClass(Spell.class)
|
||||||
|
.setProperty("hibernate.dialect", "org.hibernate.dialect.H2Dialect")
|
||||||
|
.setProperty("hibernate.connection.url", "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1")
|
||||||
|
.setProperty("hibernate.current_session_context_class", "thread")
|
||||||
|
.setProperty("hibernate.show_sql", "true")
|
||||||
|
.setProperty("hibernate.hbm2ddl.auto", "create")
|
||||||
|
.buildSessionFactory();
|
||||||
|
|
||||||
|
Session session = sessionFactory.getCurrentSession();
|
||||||
|
session.beginTransaction();
|
||||||
|
Wizard wizard = new Wizard();
|
||||||
|
wizard.setFirstName("Jugga");
|
||||||
|
Spellbook spellbook = new Spellbook();
|
||||||
|
Spell spell = new Spell();
|
||||||
|
spellbook.getSpells().add(spell);
|
||||||
|
wizard.getSpellbooks().add(spellbook);
|
||||||
|
session.persist(wizard);
|
||||||
|
Query query = session.createQuery("from Wizard");
|
||||||
|
List<?> list = query.list();
|
||||||
|
Wizard p1 = (Wizard) list.get(0);
|
||||||
|
System.out.println(String.format("id=%d firstName=%s", p1.getId(), p1.getFirstName()));
|
||||||
|
session.getTransaction().commit();
|
||||||
|
}
|
||||||
|
}
|
27
dao/src/main/java/com/iluwatar/BaseEntity.java
Normal file
27
dao/src/main/java/com/iluwatar/BaseEntity.java
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
import javax.persistence.Column;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.GeneratedValue;
|
||||||
|
import javax.persistence.Id;
|
||||||
|
import javax.persistence.Version;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
public class BaseEntity {
|
||||||
|
|
||||||
|
@Id
|
||||||
|
@GeneratedValue
|
||||||
|
@Column(name = "ID")
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
public Long getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(Long id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Version
|
||||||
|
private Long version;
|
||||||
|
}
|
24
dao/src/main/java/com/iluwatar/DaoBase.java
Normal file
24
dao/src/main/java/com/iluwatar/DaoBase.java
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
public abstract class DaoBase<E extends BaseEntity> {
|
||||||
|
|
||||||
|
E find(Long id) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void persist(E e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
E merge(E e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void remove(E e) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
List<E> findAll() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
25
dao/src/main/java/com/iluwatar/Spell.java
Normal file
25
dao/src/main/java/com/iluwatar/Spell.java
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.JoinColumn;
|
||||||
|
import javax.persistence.ManyToOne;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name="SPELL")
|
||||||
|
public class Spell extends BaseEntity {
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name="SPELLBOOK_ID_FK", referencedColumnName="ID")
|
||||||
|
private Spellbook spellbook;
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
}
|
53
dao/src/main/java/com/iluwatar/Spellbook.java
Normal file
53
dao/src/main/java/com/iluwatar/Spellbook.java
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.persistence.CascadeType;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.JoinColumn;
|
||||||
|
import javax.persistence.ManyToOne;
|
||||||
|
import javax.persistence.OneToMany;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name="SPELLBOOK")
|
||||||
|
public class Spellbook extends BaseEntity {
|
||||||
|
|
||||||
|
public Spellbook() {
|
||||||
|
spells = new HashSet<Spell>();
|
||||||
|
}
|
||||||
|
|
||||||
|
private String name;
|
||||||
|
|
||||||
|
@ManyToOne
|
||||||
|
@JoinColumn(name="WIZARD_ID_FK", referencedColumnName="ID")
|
||||||
|
private Wizard wizard;
|
||||||
|
|
||||||
|
@OneToMany(mappedBy = "spellbook", orphanRemoval = true, cascade = CascadeType.ALL)
|
||||||
|
private Set<Spell> spells;
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Wizard getWizard() {
|
||||||
|
return wizard;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setWizard(Wizard wizard) {
|
||||||
|
this.wizard = wizard;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<Spell> getSpells() {
|
||||||
|
return spells;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSpells(Set<Spell> spells) {
|
||||||
|
this.spells = spells;
|
||||||
|
}
|
||||||
|
}
|
39
dao/src/main/java/com/iluwatar/Wizard.java
Normal file
39
dao/src/main/java/com/iluwatar/Wizard.java
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.persistence.CascadeType;
|
||||||
|
import javax.persistence.Entity;
|
||||||
|
import javax.persistence.OneToMany;
|
||||||
|
import javax.persistence.Table;
|
||||||
|
|
||||||
|
@Entity
|
||||||
|
@Table(name="WIZARD")
|
||||||
|
public class Wizard extends BaseEntity {
|
||||||
|
|
||||||
|
public Wizard() {
|
||||||
|
spellbooks = new HashSet<Spellbook>();
|
||||||
|
}
|
||||||
|
|
||||||
|
private String firstName;
|
||||||
|
|
||||||
|
@OneToMany(mappedBy = "wizard", orphanRemoval = true, cascade = CascadeType.ALL)
|
||||||
|
private Set<Spellbook> spellbooks;
|
||||||
|
|
||||||
|
public String getFirstName() {
|
||||||
|
return firstName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFirstName(String firstName) {
|
||||||
|
this.firstName = firstName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<Spellbook> getSpellbooks() {
|
||||||
|
return spellbooks;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSpellbooks(Set<Spellbook> spellbooks) {
|
||||||
|
this.spellbooks = spellbooks;
|
||||||
|
}
|
||||||
|
}
|
4
dao/src/test/java/com/iluwatar/AppTest.java
Normal file
4
dao/src/test/java/com/iluwatar/AppTest.java
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
package com.iluwatar;
|
||||||
|
|
||||||
|
public class AppTest {
|
||||||
|
}
|
16
pom.xml
16
pom.xml
@ -9,6 +9,9 @@
|
|||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
<hibernate.version>5.0.0.Beta1</hibernate.version>
|
||||||
|
<h2.version>1.4.187</h2.version>
|
||||||
|
<junit.version>4.12</junit.version>
|
||||||
</properties>
|
</properties>
|
||||||
<modules>
|
<modules>
|
||||||
<module>abstract-factory</module>
|
<module>abstract-factory</module>
|
||||||
@ -46,14 +49,25 @@
|
|||||||
<module>intercepting-filter</module>
|
<module>intercepting-filter</module>
|
||||||
<module>poison-pill</module>
|
<module>poison-pill</module>
|
||||||
<module>lazy-loading</module>
|
<module>lazy-loading</module>
|
||||||
|
<module>dao</module>
|
||||||
</modules>
|
</modules>
|
||||||
|
|
||||||
<dependencyManagement>
|
<dependencyManagement>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.hibernate</groupId>
|
||||||
|
<artifactId>hibernate-core</artifactId>
|
||||||
|
<version>${hibernate.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.h2database</groupId>
|
||||||
|
<artifactId>h2</artifactId>
|
||||||
|
<version>${h2.version}</version>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>junit</groupId>
|
<groupId>junit</groupId>
|
||||||
<artifactId>junit</artifactId>
|
<artifactId>junit</artifactId>
|
||||||
<version>4.11</version>
|
<version>${junit.version}</version>
|
||||||
<scope>test</scope>
|
<scope>test</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user