Commit edc957518703dc473423f1b30bf6bf2015b00ecb
1 parent
aad7d7b1
Add DAO layer including implementation for user entity
Showing
8 changed files
with
148 additions
and
54 deletions
services/Common/src/main/java/de/bht/beuthbot/dataAccess/GenericDAO.java
0 → 100644
| 1 | +package de.bht.beuthbot.dataAccess; | ||
| 2 | + | ||
| 3 | +import de.bht.beuthbot.model.entities.Entity; | ||
| 4 | + | ||
| 5 | +import java.io.Serializable; | ||
| 6 | +import java.util.List; | ||
| 7 | + | ||
| 8 | +/** | ||
| 9 | + * Created by Benjamin Rühl on 19.12.2017. | ||
| 10 | + */ | ||
| 11 | +public interface GenericDAO<T extends Entity, ID extends Serializable> { | ||
| 12 | + | ||
| 13 | + T findById(ID id); | ||
| 14 | + | ||
| 15 | + List<T> findAll(); | ||
| 16 | + | ||
| 17 | + T saveOrUpdate(T entity); | ||
| 18 | + | ||
| 19 | + void delete(T entity); | ||
| 20 | +} |
services/Common/src/main/java/de/bht/beuthbot/dataAccess/UserDAO.java
0 → 100644
services/Global/src/main/java/de/bht/beuthbot/daos/AppUserDAO.java
0 → 100644
| 1 | +package de.bht.beuthbot.daos; | ||
| 2 | + | ||
| 3 | +import de.bht.beuthbot.dataAccess.UserDAO; | ||
| 4 | +import de.bht.beuthbot.entities.AppUser; | ||
| 5 | +import de.bht.beuthbot.model.entities.User; | ||
| 6 | + | ||
| 7 | +import javax.ejb.Stateless; | ||
| 8 | + | ||
| 9 | +/** | ||
| 10 | + * Created by Benjamin Rühl on 19.12.2017. | ||
| 11 | + */ | ||
| 12 | +@Stateless | ||
| 13 | +public class AppUserDAO extends GenericHibernateDAO<User, Long> implements UserDAO { | ||
| 14 | + | ||
| 15 | + public AppUserDAO() { | ||
| 16 | + setEntityClass(AppUser.class); | ||
| 17 | + } | ||
| 18 | +} |
services/Global/src/main/java/de/bht/beuthbot/daos/GenericHibernateDAO.java
0 → 100644
| 1 | +package de.bht.beuthbot.daos; | ||
| 2 | + | ||
| 3 | +import de.bht.beuthbot.dataAccess.GenericDAO; | ||
| 4 | +import de.bht.beuthbot.model.entities.Entity; | ||
| 5 | +import org.hibernate.Criteria; | ||
| 6 | +import org.hibernate.Session; | ||
| 7 | +import org.hibernate.criterion.Criterion; | ||
| 8 | + | ||
| 9 | +import javax.persistence.EntityManager; | ||
| 10 | +import javax.persistence.PersistenceContext; | ||
| 11 | +import java.io.Serializable; | ||
| 12 | +import java.lang.reflect.ParameterizedType; | ||
| 13 | +import java.util.List; | ||
| 14 | + | ||
| 15 | +/** | ||
| 16 | + * Created by Benjamin Rühl on 19.12.2017. | ||
| 17 | + */ | ||
| 18 | +public class GenericHibernateDAO<T extends Entity, ID extends Serializable> implements GenericDAO<T, ID> { | ||
| 19 | + | ||
| 20 | + private Class<? extends T> entityClass; | ||
| 21 | + private Session session; | ||
| 22 | + | ||
| 23 | + @PersistenceContext | ||
| 24 | + private EntityManager em; | ||
| 25 | + | ||
| 26 | + @SuppressWarnings("unchecked cast") | ||
| 27 | + public GenericHibernateDAO() { | ||
| 28 | + entityClass = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; | ||
| 29 | + setSession( (Session)em.getDelegate() ); | ||
| 30 | + } | ||
| 31 | + | ||
| 32 | + public void setSession(Session s) { | ||
| 33 | + this.session = s; | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + protected Session getSession() { | ||
| 37 | + if (session == null) | ||
| 38 | + throw new IllegalStateException("Session has not been set on DAO before usage"); | ||
| 39 | + return session; | ||
| 40 | + } | ||
| 41 | + | ||
| 42 | + /** | ||
| 43 | + * Use this in subclasses to set entityClass to derived type of T | ||
| 44 | + */ | ||
| 45 | + protected void setEntityClass(Class<? extends T> entityClass) { | ||
| 46 | + this.entityClass = entityClass; | ||
| 47 | + } | ||
| 48 | + | ||
| 49 | + public Class<? extends T> getEntityClass() { | ||
| 50 | + return entityClass; | ||
| 51 | + } | ||
| 52 | + | ||
| 53 | + @Override | ||
| 54 | + public T findById(ID id) { | ||
| 55 | + return getSession().load(getEntityClass(), id); | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + public List<T> findAll() { | ||
| 59 | + return findByCriteria(); | ||
| 60 | + } | ||
| 61 | + | ||
| 62 | + @Override | ||
| 63 | + public T saveOrUpdate(T entity) { | ||
| 64 | + getSession().saveOrUpdate(entity); | ||
| 65 | + return entity; | ||
| 66 | + } | ||
| 67 | + | ||
| 68 | + @Override | ||
| 69 | + public void delete(T entity) { | ||
| 70 | + getSession().delete(entity); | ||
| 71 | + } | ||
| 72 | + | ||
| 73 | + public void flush() { | ||
| 74 | + getSession().flush(); | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + public void clear() { | ||
| 78 | + getSession().clear(); | ||
| 79 | + } | ||
| 80 | + | ||
| 81 | + /** | ||
| 82 | + * Use this inside subclasses as a convenience method. | ||
| 83 | + */ | ||
| 84 | + @SuppressWarnings("unchecked") | ||
| 85 | + protected List<T> findByCriteria(Criterion... criterion) { | ||
| 86 | + Criteria crit = getSession().createCriteria(getEntityClass()); | ||
| 87 | + for (Criterion c : criterion) { | ||
| 88 | + crit.add(c); | ||
| 89 | + } | ||
| 90 | + return crit.list(); | ||
| 91 | + } | ||
| 92 | +} |
services/Global/src/main/java/de/bht/beuthbot/entities/User.java renamed to services/Global/src/main/java/de/bht/beuthbot/entities/AppUser.java
| @@ -5,10 +5,12 @@ import javax.persistence.Table; | @@ -5,10 +5,12 @@ import javax.persistence.Table; | ||
| 5 | 5 | ||
| 6 | /** | 6 | /** |
| 7 | * Created by Benjamin Rühl on 19.11.2017. | 7 | * Created by Benjamin Rühl on 19.11.2017. |
| 8 | + * Note: This class must not be named "User" except a different table name is provided. | ||
| 9 | + * Postgres does not support creating a table named "user". | ||
| 8 | */ | 10 | */ |
| 9 | @Entity | 11 | @Entity |
| 10 | -@Table(name = "user_entity") | ||
| 11 | -public class User extends EntityBase implements de.bht.beuthbot.model.entities.User { | 12 | +@Table |
| 13 | +public class AppUser extends EntityBase implements de.bht.beuthbot.model.entities.User { | ||
| 12 | 14 | ||
| 13 | private String facebookUserId; | 15 | private String facebookUserId; |
| 14 | private String telegramUserId; | 16 | private String telegramUserId; |
services/Global/src/main/java/de/bht/beuthbot/persistence/UserManager.java deleted
100644 → 0
| 1 | -package de.bht.beuthbot.persistence; | ||
| 2 | - | ||
| 3 | -import de.bht.beuthbot.entities.User; | ||
| 4 | - | ||
| 5 | -import javax.ejb.Stateless; | ||
| 6 | -import javax.persistence.EntityManager; | ||
| 7 | -import javax.persistence.PersistenceContext; | ||
| 8 | - | ||
| 9 | -//@Stateless | ||
| 10 | -public class UserManager { | ||
| 11 | - | ||
| 12 | - /*@PersistenceContext(unitName="PostgreSQLDS") | ||
| 13 | - protected EntityManager entityManager; | ||
| 14 | - | ||
| 15 | - public void createUser() { | ||
| 16 | - User user = new User(); | ||
| 17 | - user.setFacebookUserId("FacebookUserId"); | ||
| 18 | - user.setTelegramUserId("TelegramUserId"); | ||
| 19 | - | ||
| 20 | - entityManager.persist(user); | ||
| 21 | - }*/ | ||
| 22 | -} |
services/Global/src/main/resources/META-INF/persistence.xml
| @@ -4,18 +4,17 @@ | @@ -4,18 +4,17 @@ | ||
| 4 | http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd" | 4 | http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd" |
| 5 | version="2.1"> | 5 | version="2.1"> |
| 6 | 6 | ||
| 7 | - <persistence-unit name="PostgreSQLDS" transaction-type="RESOURCE_LOCAL"> | 7 | + <persistence-unit name="PostgreSQLDS" transaction-type="JTA"> |
| 8 | 8 | ||
| 9 | <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> | 9 | <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> |
| 10 | 10 | ||
| 11 | <jta-data-source>java:jboss/datasources/PostgreSQLDS</jta-data-source> | 11 | <jta-data-source>java:jboss/datasources/PostgreSQLDS</jta-data-source> |
| 12 | 12 | ||
| 13 | - <class>de.bht.beuthbot.entities.User</class> | ||
| 14 | - | ||
| 15 | <properties> | 13 | <properties> |
| 16 | 14 | ||
| 17 | <!--<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>--> <!-- DB Dialect --> | 15 | <!--<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>--> <!-- DB Dialect --> |
| 18 | <property name="hibernate.dialect" value="de.bht.beuthbot.persistence.ExtendedPostgreSQLDialect"/> | 16 | <property name="hibernate.dialect" value="de.bht.beuthbot.persistence.ExtendedPostgreSQLDialect"/> |
| 17 | + <!--<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy"/>--> | ||
| 19 | <property name="hibernate.hbm2ddl.auto" value="create-drop" /> <!-- create / create-drop / update / none --> | 18 | <property name="hibernate.hbm2ddl.auto" value="create-drop" /> <!-- create / create-drop / update / none --> |
| 20 | <property name="hibernate.archive.autodetection" value="class"/> | 19 | <property name="hibernate.archive.autodetection" value="class"/> |
| 21 | 20 |
services/Global/src/main/webapp/META-INF/persistence.xml deleted
100644 → 0
| 1 | -<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" | ||
| 2 | - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
| 3 | - xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence | ||
| 4 | - http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd" | ||
| 5 | - version="2.1"> | ||
| 6 | - | ||
| 7 | - <persistence-unit name="de.bht.beuthbot.jpa" transaction-type="RESOURCE_LOCAL"> | ||
| 8 | - | ||
| 9 | - <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> | ||
| 10 | - | ||
| 11 | - <properties> | ||
| 12 | - <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" /> <!-- DB Driver --> | ||
| 13 | - <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/beuthbot" /> <!-- BD Name --> | ||
| 14 | - <property name="javax.persistence.jdbc.user" value="beuthbot_app" /> <!-- DB User --> | ||
| 15 | - <property name="javax.persistence.jdbc.password" value="VhS7WPVpdYEHYLpf" /> <!-- DB Password --> | ||
| 16 | - | ||
| 17 | - <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQL95Dialect"/> <!-- DB Dialect --> | ||
| 18 | - <property name="hibernate.hbm2ddl.auto" value="create-drop" /> <!-- create / create-drop / update / none --> | ||
| 19 | - <property name="hibernate.archive.autodetection" value="class"/> | ||
| 20 | - | ||
| 21 | - <property name="hibernate.show_sql" value="true" /> <!-- Show SQL in console --> | ||
| 22 | - <property name="hibernate.format_sql" value="true" /> <!-- Show SQL formatted --> | ||
| 23 | - </properties> | ||
| 24 | - | ||
| 25 | - </persistence-unit> | ||
| 26 | - | ||
| 27 | -</persistence> | ||
| 28 | \ No newline at end of file | 0 | \ No newline at end of file |