Merge pull request #11850 from anuragkumawat/master
JAVA-10081 :Create new module hibernate-mapping from spring-hibernate…
This commit is contained in:
commit
be0e55765c
13
persistence-modules/hibernate-mapping-2/.gitignore
vendored
Normal file
13
persistence-modules/hibernate-mapping-2/.gitignore
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
*.class
|
||||||
|
|
||||||
|
#folders#
|
||||||
|
/target
|
||||||
|
/neoDb*
|
||||||
|
/data
|
||||||
|
/src/main/webapp/WEB-INF/classes
|
||||||
|
*/META-INF/*
|
||||||
|
|
||||||
|
# Packaged files #
|
||||||
|
*.jar
|
||||||
|
*.war
|
||||||
|
*.ear
|
7
persistence-modules/hibernate-mapping-2/README.md
Normal file
7
persistence-modules/hibernate-mapping-2/README.md
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
## Hibernate Mapping
|
||||||
|
|
||||||
|
This module contains articles about Hibernate Mappings.
|
||||||
|
|
||||||
|
### Relevant articles
|
||||||
|
|
||||||
|
- [Hibernate Many to Many Annotation Tutorial](https://www.baeldung.com/hibernate-many-to-many)
|
86
persistence-modules/hibernate-mapping-2/pom.xml
Normal file
86
persistence-modules/hibernate-mapping-2/pom.xml
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
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>
|
||||||
|
<artifactId>hibernate-mapping-2y</artifactId>
|
||||||
|
<version>0.1-SNAPSHOT</version>
|
||||||
|
<name>hibernate-mapping-2</name>
|
||||||
|
|
||||||
|
<parent>
|
||||||
|
<groupId>com.baeldung</groupId>
|
||||||
|
<artifactId>persistence-modules</artifactId>
|
||||||
|
<version>1.0.0-SNAPSHOT</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!-- Spring -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-context</artifactId>
|
||||||
|
<version>${org.springframework.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- persistence -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework.data</groupId>
|
||||||
|
<artifactId>spring-data-jpa</artifactId>
|
||||||
|
<version>${org.springframework.data.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.hibernate</groupId>
|
||||||
|
<artifactId>hibernate-core</artifactId>
|
||||||
|
<version>${hibernate.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.apache.tomcat</groupId>
|
||||||
|
<artifactId>tomcat-dbcp</artifactId>
|
||||||
|
<version>${tomcat-dbcp.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- validation -->
|
||||||
|
<!-- utils -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.google.guava</groupId>
|
||||||
|
<artifactId>guava</artifactId>
|
||||||
|
<version>${guava.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!-- test scoped -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.springframework</groupId>
|
||||||
|
<artifactId>spring-test</artifactId>
|
||||||
|
<version>${org.springframework.version}</version>
|
||||||
|
<scope>test</scope>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.h2database</groupId>
|
||||||
|
<artifactId>h2</artifactId>
|
||||||
|
<version>${h2.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-core</artifactId>
|
||||||
|
<version>${com.sun.xml.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-api</artifactId>
|
||||||
|
<version>${javax.xml.bind.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-impl</artifactId>
|
||||||
|
<version>${com.sun.xml.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
|
||||||
|
<properties>
|
||||||
|
<!-- Spring -->
|
||||||
|
<org.springframework.version>5.0.2.RELEASE</org.springframework.version>
|
||||||
|
<org.springframework.data.version>1.10.6.RELEASE</org.springframework.data.version>
|
||||||
|
<!-- persistence -->
|
||||||
|
<hibernate.version>5.2.10.Final</hibernate.version>
|
||||||
|
<tomcat-dbcp.version>9.0.0.M26</tomcat-dbcp.version>
|
||||||
|
<com.sun.xml.version>2.3.0.1</com.sun.xml.version>
|
||||||
|
<javax.xml.bind.version>2.3.1</javax.xml.bind.version>
|
||||||
|
</properties>
|
||||||
|
|
||||||
|
</project>
|
@ -1,70 +1,72 @@
|
|||||||
package com.baeldung.manytomany.spring;
|
package com.baeldung.manytomany;
|
||||||
|
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import javax.sql.DataSource;
|
|
||||||
import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;
|
import javax.sql.DataSource;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;
|
||||||
import org.springframework.context.annotation.ComponentScan;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.context.annotation.PropertySource;
|
import org.springframework.context.annotation.ComponentScan;
|
||||||
import org.springframework.core.env.Environment;
|
import org.springframework.context.annotation.Configuration;
|
||||||
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
|
import org.springframework.context.annotation.PropertySource;
|
||||||
import org.springframework.orm.hibernate5.HibernateTransactionManager;
|
import org.springframework.core.env.Environment;
|
||||||
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
|
import org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor;
|
||||||
import org.springframework.transaction.PlatformTransactionManager;
|
import org.springframework.orm.hibernate5.HibernateTransactionManager;
|
||||||
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
import org.springframework.orm.hibernate5.LocalSessionFactoryBean;
|
||||||
|
import org.springframework.transaction.PlatformTransactionManager;
|
||||||
|
import org.springframework.transaction.annotation.EnableTransactionManagement;
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EnableTransactionManagement
|
|
||||||
@PropertySource({ "classpath:persistence-h2.properties" })
|
@Configuration
|
||||||
@ComponentScan({ "com.baeldung.hibernate.manytomany" })
|
@EnableTransactionManagement
|
||||||
public class PersistenceConfig {
|
@PropertySource({ "classpath:persistence-h2.properties" })
|
||||||
|
@ComponentScan({ "com.baeldung.manytomany" })
|
||||||
@Autowired
|
public class PersistenceConfig {
|
||||||
private Environment env;
|
|
||||||
|
@Autowired
|
||||||
@Bean
|
private Environment env;
|
||||||
public LocalSessionFactoryBean sessionFactory() {
|
|
||||||
final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
|
@Bean
|
||||||
sessionFactory.setDataSource(restDataSource());
|
public LocalSessionFactoryBean sessionFactory() {
|
||||||
sessionFactory.setPackagesToScan(new String[] { "com.baeldung.hibernate.manytomany" });
|
final LocalSessionFactoryBean sessionFactory = new LocalSessionFactoryBean();
|
||||||
sessionFactory.setHibernateProperties(hibernateProperties());
|
sessionFactory.setDataSource(restDataSource());
|
||||||
|
sessionFactory.setPackagesToScan(new String[] { "com.baeldung.manytomany" });
|
||||||
return sessionFactory;
|
sessionFactory.setHibernateProperties(hibernateProperties());
|
||||||
}
|
|
||||||
|
return sessionFactory;
|
||||||
@Bean
|
}
|
||||||
public DataSource restDataSource() {
|
|
||||||
final BasicDataSource dataSource = new BasicDataSource();
|
@Bean
|
||||||
dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
|
public DataSource restDataSource() {
|
||||||
dataSource.setUrl(env.getProperty("jdbc.url"));
|
final BasicDataSource dataSource = new BasicDataSource();
|
||||||
dataSource.setUsername(env.getProperty("jdbc.user"));
|
dataSource.setDriverClassName(env.getProperty("jdbc.driverClassName"));
|
||||||
dataSource.setPassword(env.getProperty("jdbc.pass"));
|
dataSource.setUrl(env.getProperty("jdbc.url"));
|
||||||
|
dataSource.setUsername(env.getProperty("jdbc.user"));
|
||||||
return dataSource;
|
dataSource.setPassword(env.getProperty("jdbc.pass"));
|
||||||
}
|
|
||||||
|
return dataSource;
|
||||||
@Bean
|
}
|
||||||
public PlatformTransactionManager hibernateTransactionManager() {
|
|
||||||
final HibernateTransactionManager transactionManager = new HibernateTransactionManager();
|
@Bean
|
||||||
transactionManager.setSessionFactory(sessionFactory().getObject());
|
public PlatformTransactionManager hibernateTransactionManager() {
|
||||||
return transactionManager;
|
final HibernateTransactionManager transactionManager = new HibernateTransactionManager();
|
||||||
}
|
transactionManager.setSessionFactory(sessionFactory().getObject());
|
||||||
|
return transactionManager;
|
||||||
@Bean
|
}
|
||||||
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
|
|
||||||
return new PersistenceExceptionTranslationPostProcessor();
|
@Bean
|
||||||
}
|
public PersistenceExceptionTranslationPostProcessor exceptionTranslation() {
|
||||||
|
return new PersistenceExceptionTranslationPostProcessor();
|
||||||
private final Properties hibernateProperties() {
|
}
|
||||||
final Properties hibernateProperties = new Properties();
|
|
||||||
hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
|
private final Properties hibernateProperties() {
|
||||||
hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
|
final Properties hibernateProperties = new Properties();
|
||||||
hibernateProperties.setProperty("hibernate.show_sql", "false");
|
hibernateProperties.setProperty("hibernate.hbm2ddl.auto", env.getProperty("hibernate.hbm2ddl.auto"));
|
||||||
|
hibernateProperties.setProperty("hibernate.dialect", env.getProperty("hibernate.dialect"));
|
||||||
return hibernateProperties;
|
hibernateProperties.setProperty("hibernate.show_sql", "false");
|
||||||
}
|
|
||||||
}
|
return hibernateProperties;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
package com.baeldung.manytomany.dao;
|
||||||
|
|
||||||
|
import com.baeldung.manytomany.dao.common.IOperations;
|
||||||
|
import com.baeldung.manytomany.model.Employee;
|
||||||
|
|
||||||
|
public interface IEmployeeDao extends IOperations<Employee>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,8 @@
|
|||||||
|
package com.baeldung.manytomany.dao;
|
||||||
|
|
||||||
|
import com.baeldung.manytomany.dao.common.IOperations;
|
||||||
|
import com.baeldung.manytomany.model.Project;
|
||||||
|
|
||||||
|
public interface IProjectDao extends IOperations<Project>{
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
package com.baeldung.manytomany.dao.common;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
|
|
||||||
|
public abstract class AbstractDao<T extends Serializable> implements IOperations<T> {
|
||||||
|
|
||||||
|
protected Class<T> clazz;
|
||||||
|
|
||||||
|
protected final void setClazz(final Class<T> clazzToSet) {
|
||||||
|
clazz = Preconditions.checkNotNull(clazzToSet);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
package com.baeldung.manytomany.dao.common;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.hibernate.Session;
|
||||||
|
import org.hibernate.SessionFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
|
||||||
|
import com.google.common.base.Preconditions;
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public abstract class AbstractHibernateDao<T extends Serializable> extends AbstractDao<T> implements IOperations<T> {
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
protected SessionFactory sessionFactory;
|
||||||
|
|
||||||
|
// API
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T findOne(final long id) {
|
||||||
|
return (T) getCurrentSession().get(clazz, id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<T> findAll() {
|
||||||
|
return getCurrentSession().createQuery("from " + clazz.getName()).getResultList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void create(final T entity) {
|
||||||
|
Preconditions.checkNotNull(entity);
|
||||||
|
getCurrentSession().saveOrUpdate(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public T update(final T entity) {
|
||||||
|
Preconditions.checkNotNull(entity);
|
||||||
|
return (T) getCurrentSession().merge(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void delete(final T entity) {
|
||||||
|
Preconditions.checkNotNull(entity);
|
||||||
|
getCurrentSession().delete(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void deleteById(final long entityId) {
|
||||||
|
final T entity = findOne(entityId);
|
||||||
|
Preconditions.checkState(entity != null);
|
||||||
|
delete(entity);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Session getCurrentSession() {
|
||||||
|
return sessionFactory.getCurrentSession();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,20 @@
|
|||||||
|
package com.baeldung.manytomany.dao.common;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface IOperations<T extends Serializable> {
|
||||||
|
|
||||||
|
T findOne(final long id);
|
||||||
|
|
||||||
|
List<T> findAll();
|
||||||
|
|
||||||
|
void create(final T entity);
|
||||||
|
|
||||||
|
T update(final T entity);
|
||||||
|
|
||||||
|
void delete(final T entity);
|
||||||
|
|
||||||
|
void deleteById(final long entityId);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package com.baeldung.manytomany.dao.impl;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import com.baeldung.manytomany.dao.IEmployeeDao;
|
||||||
|
import com.baeldung.manytomany.dao.common.AbstractHibernateDao;
|
||||||
|
import com.baeldung.manytomany.model.Employee;
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public class EmployeeDao extends AbstractHibernateDao<Employee> implements IEmployeeDao {
|
||||||
|
|
||||||
|
public EmployeeDao() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
setClazz(Employee.class);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.baeldung.manytomany.dao.impl;
|
||||||
|
|
||||||
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import com.baeldung.manytomany.dao.IProjectDao;
|
||||||
|
import com.baeldung.manytomany.dao.common.AbstractHibernateDao;
|
||||||
|
import com.baeldung.manytomany.model.Project;
|
||||||
|
|
||||||
|
|
||||||
|
@Repository
|
||||||
|
public class ProjectDao extends AbstractHibernateDao<Project> implements IProjectDao {
|
||||||
|
|
||||||
|
public ProjectDao() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
setClazz(Project.class);
|
||||||
|
}
|
||||||
|
}
|
@ -1,88 +1,88 @@
|
|||||||
package com.baeldung.hibernate.manytomany.model;
|
package com.baeldung.manytomany.model;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.persistence.CascadeType;
|
import javax.persistence.CascadeType;
|
||||||
import javax.persistence.Column;
|
import javax.persistence.Column;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.GeneratedValue;
|
import javax.persistence.GeneratedValue;
|
||||||
import javax.persistence.GenerationType;
|
import javax.persistence.GenerationType;
|
||||||
import javax.persistence.Id;
|
import javax.persistence.Id;
|
||||||
import javax.persistence.JoinColumn;
|
import javax.persistence.JoinColumn;
|
||||||
import javax.persistence.JoinTable;
|
import javax.persistence.JoinTable;
|
||||||
import javax.persistence.ManyToMany;
|
import javax.persistence.ManyToMany;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.Table;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "Employee")
|
@Table(name = "Employee")
|
||||||
public class Employee implements Serializable {
|
public class Employee implements Serializable {
|
||||||
@Id
|
@Id
|
||||||
@Column(name = "employee_id")
|
@Column(name = "employee_id")
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
private Long employeeId;
|
private Long employeeId;
|
||||||
|
|
||||||
@Column(name = "first_name")
|
@Column(name = "first_name")
|
||||||
private String firstName;
|
private String firstName;
|
||||||
|
|
||||||
@Column(name = "last_name")
|
@Column(name = "last_name")
|
||||||
private String lastName;
|
private String lastName;
|
||||||
|
|
||||||
@ManyToMany(cascade = { CascadeType.ALL })
|
@ManyToMany(cascade = { CascadeType.ALL })
|
||||||
@JoinTable(
|
@JoinTable(
|
||||||
name = "Employee_Project",
|
name = "Employee_Project",
|
||||||
joinColumns = { @JoinColumn(name = "employee_id") },
|
joinColumns = { @JoinColumn(name = "employee_id") },
|
||||||
inverseJoinColumns = { @JoinColumn(name = "project_id") }
|
inverseJoinColumns = { @JoinColumn(name = "project_id") }
|
||||||
)
|
)
|
||||||
Set<Project> projects = new HashSet<Project>();
|
Set<Project> projects = new HashSet<Project>();
|
||||||
|
|
||||||
|
|
||||||
public Employee() {
|
public Employee() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Employee(String firstName, String lastName) {
|
public Employee(String firstName, String lastName) {
|
||||||
this.firstName = firstName;
|
this.firstName = firstName;
|
||||||
this.lastName = lastName;
|
this.lastName = lastName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Employee(String firstName, String lastName, Set<Project> projects) {
|
public Employee(String firstName, String lastName, Set<Project> projects) {
|
||||||
this.firstName = firstName;
|
this.firstName = firstName;
|
||||||
this.lastName = lastName;
|
this.lastName = lastName;
|
||||||
this.projects = projects;
|
this.projects = projects;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public Long getEmployeeId() {
|
public Long getEmployeeId() {
|
||||||
return employeeId;
|
return employeeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEmployeeId(Long employeeId) {
|
public void setEmployeeId(Long employeeId) {
|
||||||
this.employeeId = employeeId;
|
this.employeeId = employeeId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFirstName() {
|
public String getFirstName() {
|
||||||
return firstName;
|
return firstName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFirstName(String firstName) {
|
public void setFirstName(String firstName) {
|
||||||
this.firstName = firstName;
|
this.firstName = firstName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getLastName() {
|
public String getLastName() {
|
||||||
return lastName;
|
return lastName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLastName(String lastName) {
|
public void setLastName(String lastName) {
|
||||||
this.lastName = lastName;
|
this.lastName = lastName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<Project> getProjects() {
|
public Set<Project> getProjects() {
|
||||||
return projects;
|
return projects;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setProjects(Set<Project> projects) {
|
public void setProjects(Set<Project> projects) {
|
||||||
this.projects = projects;
|
this.projects = projects;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,61 +1,62 @@
|
|||||||
package com.baeldung.hibernate.manytomany.model;
|
package com.baeldung.manytomany.model;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import javax.persistence.Column;
|
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Column;
|
||||||
import javax.persistence.GeneratedValue;
|
import javax.persistence.Entity;
|
||||||
import javax.persistence.Id;
|
import javax.persistence.GeneratedValue;
|
||||||
import javax.persistence.ManyToMany;
|
import javax.persistence.Id;
|
||||||
import javax.persistence.Table;
|
import javax.persistence.ManyToMany;
|
||||||
|
import javax.persistence.Table;
|
||||||
@Entity
|
|
||||||
@Table(name = "Project")
|
@Entity
|
||||||
public class Project implements Serializable {
|
@Table(name = "Project")
|
||||||
|
public class Project implements Serializable {
|
||||||
@Id
|
|
||||||
@Column(name = "project_id")
|
@Id
|
||||||
@GeneratedValue
|
@Column(name = "project_id")
|
||||||
private Long projectId;
|
@GeneratedValue
|
||||||
|
private Long projectId;
|
||||||
@Column(name = "title")
|
|
||||||
private String title;
|
@Column(name = "title")
|
||||||
|
private String title;
|
||||||
@ManyToMany(mappedBy = "projects")
|
|
||||||
private Set<Employee> employees = new HashSet<Employee>();
|
@ManyToMany(mappedBy = "projects")
|
||||||
|
private Set<Employee> employees = new HashSet<Employee>();
|
||||||
public Project() {
|
|
||||||
super();
|
public Project() {
|
||||||
}
|
super();
|
||||||
|
}
|
||||||
public Project(String title) {
|
|
||||||
this.title = title;
|
public Project(String title) {
|
||||||
}
|
this.title = title;
|
||||||
|
}
|
||||||
public Long getProjectId() {
|
|
||||||
return projectId;
|
public Long getProjectId() {
|
||||||
}
|
return projectId;
|
||||||
|
}
|
||||||
public void setProjectId(Long projectId) {
|
|
||||||
this.projectId = projectId;
|
public void setProjectId(Long projectId) {
|
||||||
}
|
this.projectId = projectId;
|
||||||
|
}
|
||||||
public String getTitle() {
|
|
||||||
return title;
|
public String getTitle() {
|
||||||
}
|
return title;
|
||||||
|
}
|
||||||
public void setTitle(String title) {
|
|
||||||
this.title = title;
|
public void setTitle(String title) {
|
||||||
}
|
this.title = title;
|
||||||
|
}
|
||||||
public Set<Employee> getEmployees() {
|
|
||||||
return employees;
|
public Set<Employee> getEmployees() {
|
||||||
}
|
return employees;
|
||||||
|
}
|
||||||
public void setEmployees(Set<Employee> employees) {
|
|
||||||
this.employees = employees;
|
public void setEmployees(Set<Employee> employees) {
|
||||||
}
|
this.employees = employees;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
}
|
@ -1,45 +1,46 @@
|
|||||||
package com.baeldung.hibernate.manytomany.util;
|
package com.baeldung.manytomany.util;
|
||||||
|
|
||||||
import org.hibernate.SessionFactory;
|
import org.hibernate.SessionFactory;
|
||||||
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
|
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
|
||||||
import org.hibernate.cfg.Configuration;
|
import org.hibernate.cfg.Configuration;
|
||||||
import org.hibernate.service.ServiceRegistry;
|
import org.hibernate.service.ServiceRegistry;
|
||||||
import com.baeldung.hibernate.manytomany.model.Employee;
|
import org.slf4j.Logger;
|
||||||
import com.baeldung.hibernate.manytomany.model.Project;
|
import org.slf4j.LoggerFactory;
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
import com.baeldung.manytomany.model.Employee;
|
||||||
|
import com.baeldung.manytomany.model.Project;
|
||||||
public class HibernateUtil {
|
|
||||||
|
public class HibernateUtil {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(HibernateUtil.class);
|
|
||||||
private static SessionFactory sessionFactory;
|
private static final Logger LOGGER = LoggerFactory.getLogger(HibernateUtil.class);
|
||||||
|
private static SessionFactory sessionFactory;
|
||||||
private static SessionFactory buildSessionFactory() {
|
|
||||||
try {
|
private static SessionFactory buildSessionFactory() {
|
||||||
// Create the SessionFactory from hibernate-annotation.cfg.xml
|
try {
|
||||||
Configuration configuration = new Configuration();
|
// Create the SessionFactory from hibernate-annotation.cfg.xml
|
||||||
configuration.addAnnotatedClass(Employee.class);
|
Configuration configuration = new Configuration();
|
||||||
configuration.addAnnotatedClass(Project.class);
|
configuration.addAnnotatedClass(Employee.class);
|
||||||
configuration.configure("manytomany.cfg.xml");
|
configuration.addAnnotatedClass(Project.class);
|
||||||
LOGGER.debug("Hibernate Annotation Configuration loaded");
|
configuration.configure("manytomany.cfg.xml");
|
||||||
|
LOGGER.debug("Hibernate Annotation Configuration loaded");
|
||||||
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties())
|
|
||||||
.build();
|
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties())
|
||||||
LOGGER.debug("Hibernate Annotation serviceRegistry created");
|
.build();
|
||||||
|
LOGGER.debug("Hibernate Annotation serviceRegistry created");
|
||||||
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
|
|
||||||
|
SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);
|
||||||
return sessionFactory;
|
|
||||||
} catch (Throwable ex) {
|
return sessionFactory;
|
||||||
LOGGER.error("Initial SessionFactory creation failed.", ex);
|
} catch (Throwable ex) {
|
||||||
throw new ExceptionInInitializerError(ex);
|
LOGGER.error("Initial SessionFactory creation failed.", ex);
|
||||||
}
|
throw new ExceptionInInitializerError(ex);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
public static SessionFactory getSessionFactory() {
|
|
||||||
if (sessionFactory == null) {
|
public static SessionFactory getSessionFactory() {
|
||||||
sessionFactory = buildSessionFactory();
|
if (sessionFactory == null) {
|
||||||
}
|
sessionFactory = buildSessionFactory();
|
||||||
return sessionFactory;
|
}
|
||||||
}
|
return sessionFactory;
|
||||||
}
|
}
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration>
|
||||||
|
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>web - %date [%thread] %-5level %logger{36} - %message%n
|
||||||
|
</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<logger name="org.springframework" level="WARN" />
|
||||||
|
<logger name="org.springframework.transaction" level="WARN" />
|
||||||
|
|
||||||
|
<!-- in order to debug some marshalling issues, this needs to be TRACE -->
|
||||||
|
<logger name="org.springframework.web.servlet.mvc" level="WARN" />
|
||||||
|
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="STDOUT" />
|
||||||
|
</root>
|
||||||
|
</configuration>
|
@ -0,0 +1,11 @@
|
|||||||
|
# jdbc.X
|
||||||
|
jdbc.driverClassName=org.h2.Driver
|
||||||
|
jdbc.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
|
||||||
|
jdbc.eventGeneratedId=sa
|
||||||
|
jdbc.user=sa
|
||||||
|
jdbc.pass=
|
||||||
|
|
||||||
|
# hibernate.X
|
||||||
|
hibernate.dialect=org.hibernate.dialect.H2Dialect
|
||||||
|
hibernate.show_sql=false
|
||||||
|
hibernate.hbm2ddl.auto=create-drop
|
@ -0,0 +1,18 @@
|
|||||||
|
package com.baeldung;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.junit.runner.RunWith;
|
||||||
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
|
import org.springframework.test.context.support.AnnotationConfigContextLoader;
|
||||||
|
|
||||||
|
import com.baeldung.manytomany.PersistenceConfig;
|
||||||
|
|
||||||
|
@RunWith(SpringJUnit4ClassRunner.class)
|
||||||
|
@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class)
|
||||||
|
public class SpringContextTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenSpringContextIsBootstrapped_thenNoExceptions() {
|
||||||
|
}
|
||||||
|
}
|
@ -1,49 +1,50 @@
|
|||||||
package com.baeldung.hibernate.manytomany;
|
package com.baeldung.hibernate.manytomany;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import org.hibernate.Session;
|
|
||||||
import org.hibernate.SessionFactory;
|
import org.hibernate.Session;
|
||||||
import org.junit.After;
|
import org.hibernate.SessionFactory;
|
||||||
import org.junit.Before;
|
import org.junit.After;
|
||||||
import org.junit.Test;
|
import org.junit.Before;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.Test;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.junit.runner.RunWith;
|
||||||
import org.springframework.test.context.ContextConfiguration;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
import org.springframework.test.context.ContextConfiguration;
|
||||||
import org.springframework.test.context.support.AnnotationConfigContextLoader;
|
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||||
import com.baeldung.hibernate.manytomany.model.Employee;
|
import org.springframework.test.context.support.AnnotationConfigContextLoader;
|
||||||
import com.baeldung.hibernate.manytomany.model.Project;
|
import com.baeldung.manytomany.PersistenceConfig;
|
||||||
import com.baeldung.manytomany.spring.PersistenceConfig;
|
import com.baeldung.manytomany.model.Employee;
|
||||||
|
import com.baeldung.manytomany.model.Project;
|
||||||
@RunWith(SpringJUnit4ClassRunner.class)
|
|
||||||
@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class)
|
@RunWith(SpringJUnit4ClassRunner.class)
|
||||||
public class HibernateManyToManyAnnotationJavaConfigMainIntegrationTest {
|
@ContextConfiguration(classes = { PersistenceConfig.class }, loader = AnnotationConfigContextLoader.class)
|
||||||
|
public class HibernateManyToManyAnnotationJavaConfigMainIntegrationTest {
|
||||||
@Autowired
|
|
||||||
private SessionFactory sessionFactory;
|
@Autowired
|
||||||
|
private SessionFactory sessionFactory;
|
||||||
private Session session;
|
|
||||||
|
private Session session;
|
||||||
@Before
|
|
||||||
public final void before() {
|
@Before
|
||||||
session = sessionFactory.openSession();
|
public final void before() {
|
||||||
session.beginTransaction();
|
session = sessionFactory.openSession();
|
||||||
}
|
session.beginTransaction();
|
||||||
|
}
|
||||||
@After
|
|
||||||
public final void after() {
|
@After
|
||||||
session.getTransaction().commit();
|
public final void after() {
|
||||||
session.close();
|
session.getTransaction().commit();
|
||||||
}
|
session.close();
|
||||||
|
}
|
||||||
@Test
|
|
||||||
public final void whenEntitiesAreCreated_thenNoExceptions() {
|
@Test
|
||||||
Set<Project> projects = new HashSet<Project>();
|
public final void whenEntitiesAreCreated_thenNoExceptions() {
|
||||||
projects.add(new Project("IT Project"));
|
Set<Project> projects = new HashSet<Project>();
|
||||||
projects.add(new Project("Networking Project"));
|
projects.add(new Project("IT Project"));
|
||||||
session.persist(new Employee("Peter", "Oven", projects));
|
projects.add(new Project("Networking Project"));
|
||||||
session.persist(new Employee("Allan", "Norman", projects));
|
session.persist(new Employee("Peter", "Oven", projects));
|
||||||
}
|
session.persist(new Employee("Allan", "Norman", projects));
|
||||||
|
}
|
||||||
}
|
|
||||||
|
}
|
@ -1,80 +1,82 @@
|
|||||||
package com.baeldung.hibernate.manytomany;
|
package com.baeldung.hibernate.manytomany;
|
||||||
|
|
||||||
import static org.junit.Assert.assertNotNull;
|
import static junit.framework.TestCase.assertEquals;
|
||||||
import static junit.framework.TestCase.assertEquals;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import java.util.HashSet;
|
|
||||||
import java.util.List;
|
import java.util.HashSet;
|
||||||
import java.util.Set;
|
import java.util.List;
|
||||||
import org.hibernate.Session;
|
import java.util.Set;
|
||||||
import org.hibernate.SessionFactory;
|
|
||||||
import org.junit.After;
|
import org.hibernate.Session;
|
||||||
import org.junit.AfterClass;
|
import org.hibernate.SessionFactory;
|
||||||
import org.junit.Before;
|
import org.junit.After;
|
||||||
import org.junit.BeforeClass;
|
import org.junit.AfterClass;
|
||||||
import org.junit.Test;
|
import org.junit.Before;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import com.baeldung.hibernate.manytomany.util.HibernateUtil;
|
import org.junit.Test;
|
||||||
import com.baeldung.hibernate.manytomany.model.Employee;
|
|
||||||
import com.baeldung.hibernate.manytomany.model.Project;
|
import com.baeldung.manytomany.model.Employee;
|
||||||
|
import com.baeldung.manytomany.model.Project;
|
||||||
/**
|
import com.baeldung.manytomany.util.HibernateUtil;
|
||||||
* Configured in: manytomany.cfg.xml
|
|
||||||
*/
|
/**
|
||||||
public class HibernateManyToManyAnnotationMainIntegrationTest {
|
* Configured in: manytomany.cfg.xml
|
||||||
private static SessionFactory sessionFactory;
|
*/
|
||||||
|
public class HibernateManyToManyAnnotationMainIntegrationTest {
|
||||||
private Session session;
|
private static SessionFactory sessionFactory;
|
||||||
|
|
||||||
@BeforeClass
|
private Session session;
|
||||||
public static void beforeTests() {
|
|
||||||
sessionFactory = HibernateUtil.getSessionFactory();
|
@BeforeClass
|
||||||
}
|
public static void beforeTests() {
|
||||||
|
sessionFactory = HibernateUtil.getSessionFactory();
|
||||||
@Before
|
}
|
||||||
public void setUp() {
|
|
||||||
session = sessionFactory.openSession();
|
@Before
|
||||||
session.beginTransaction();
|
public void setUp() {
|
||||||
}
|
session = sessionFactory.openSession();
|
||||||
|
session.beginTransaction();
|
||||||
@Test
|
}
|
||||||
public void givenData_whenInsert_thenCreatesMtoMrelationship() {
|
|
||||||
String[] employeeData = { "Peter Oven", "Allan Norman" };
|
@Test
|
||||||
String[] projectData = { "IT Project", "Networking Project" };
|
public void givenData_whenInsert_thenCreatesMtoMrelationship() {
|
||||||
Set<Project> projects = new HashSet<Project>();
|
String[] employeeData = { "Peter Oven", "Allan Norman" };
|
||||||
|
String[] projectData = { "IT Project", "Networking Project" };
|
||||||
for (String proj : projectData) {
|
Set<Project> projects = new HashSet<Project>();
|
||||||
projects.add(new Project(proj));
|
|
||||||
}
|
for (String proj : projectData) {
|
||||||
|
projects.add(new Project(proj));
|
||||||
for (String emp : employeeData) {
|
}
|
||||||
Employee employee = new Employee(emp.split(" ")[0], emp.split(" ")[1]);
|
|
||||||
assertEquals(0, employee.getProjects().size());
|
for (String emp : employeeData) {
|
||||||
employee.setProjects(projects);
|
Employee employee = new Employee(emp.split(" ")[0], emp.split(" ")[1]);
|
||||||
session.persist(employee);
|
assertEquals(0, employee.getProjects().size());
|
||||||
assertNotNull(employee);
|
employee.setProjects(projects);
|
||||||
}
|
session.persist(employee);
|
||||||
}
|
assertNotNull(employee);
|
||||||
|
}
|
||||||
@Test
|
}
|
||||||
public void givenSession_whenRead_thenReturnsMtoMdata() {
|
|
||||||
@SuppressWarnings("unchecked")
|
@Test
|
||||||
List<Employee> employeeList = session.createQuery("FROM Employee").list();
|
public void givenSession_whenRead_thenReturnsMtoMdata() {
|
||||||
assertNotNull(employeeList);
|
@SuppressWarnings("unchecked")
|
||||||
for(Employee employee : employeeList) {
|
List<Employee> employeeList = session.createQuery("FROM Employee").list();
|
||||||
assertNotNull(employee.getProjects());
|
assertNotNull(employeeList);
|
||||||
}
|
for(Employee employee : employeeList) {
|
||||||
}
|
assertNotNull(employee.getProjects());
|
||||||
|
}
|
||||||
@After
|
}
|
||||||
public void tearDown() {
|
|
||||||
session.getTransaction()
|
@After
|
||||||
.commit();
|
public void tearDown() {
|
||||||
session.close();
|
session.getTransaction()
|
||||||
}
|
.commit();
|
||||||
|
session.close();
|
||||||
@AfterClass
|
}
|
||||||
public static void afterTests() {
|
|
||||||
sessionFactory.close();
|
@AfterClass
|
||||||
}
|
public static void afterTests() {
|
||||||
|
sessionFactory.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
@ -13,4 +13,4 @@
|
|||||||
<property name="hibernate.show_sql">false</property>
|
<property name="hibernate.show_sql">false</property>
|
||||||
<property name="hibernate.hbm2ddl.auto">create-drop</property>
|
<property name="hibernate.hbm2ddl.auto">create-drop</property>
|
||||||
</session-factory>
|
</session-factory>
|
||||||
</hibernate-configuration>
|
</hibernate-configuration>
|
@ -4,7 +4,6 @@ This module contains articles about Hibernate 5 with Spring.
|
|||||||
|
|
||||||
### Relevant articles
|
### Relevant articles
|
||||||
|
|
||||||
- [Hibernate Many to Many Annotation Tutorial](https://www.baeldung.com/hibernate-many-to-many)
|
|
||||||
- [Programmatic Transactions in the Spring TestContext Framework](https://www.baeldung.com/spring-test-programmatic-transactions)
|
- [Programmatic Transactions in the Spring TestContext Framework](https://www.baeldung.com/spring-test-programmatic-transactions)
|
||||||
- [JPA Criteria Queries](https://www.baeldung.com/hibernate-criteria-queries)
|
- [JPA Criteria Queries](https://www.baeldung.com/hibernate-criteria-queries)
|
||||||
- [Introduction to Hibernate Search](https://www.baeldung.com/hibernate-search)
|
- [Introduction to Hibernate Search](https://www.baeldung.com/hibernate-search)
|
||||||
|
@ -107,7 +107,22 @@
|
|||||||
<groupId>com.h2database</groupId>
|
<groupId>com.h2database</groupId>
|
||||||
<artifactId>h2</artifactId>
|
<artifactId>h2</artifactId>
|
||||||
<version>${h2.version}</version>
|
<version>${h2.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-core</artifactId>
|
||||||
|
<version>${com.sun.xml.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-api</artifactId>
|
||||||
|
<version>${javax.xml.bind.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.sun.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-impl</artifactId>
|
||||||
|
<version>${com.sun.xml.version}</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
@ -122,6 +137,8 @@
|
|||||||
<tomcat-dbcp.version>9.0.0.M26</tomcat-dbcp.version>
|
<tomcat-dbcp.version>9.0.0.M26</tomcat-dbcp.version>
|
||||||
<jta.version>1.1</jta.version>
|
<jta.version>1.1</jta.version>
|
||||||
<hsqldb.version>2.3.4</hsqldb.version>
|
<hsqldb.version>2.3.4</hsqldb.version>
|
||||||
|
<com.sun.xml.version>2.3.0.1</com.sun.xml.version>
|
||||||
|
<javax.xml.bind.version>2.3.1</javax.xml.bind.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
</project>
|
</project>
|
@ -1,8 +0,0 @@
|
|||||||
package com.baeldung.persistence.manytomany.dao;
|
|
||||||
|
|
||||||
import com.baeldung.hibernate.manytomany.model.Employee;
|
|
||||||
import com.baeldung.persistence.dao.common.IOperations;
|
|
||||||
|
|
||||||
public interface IEmployeeDao extends IOperations<Employee>{
|
|
||||||
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
package com.baeldung.persistence.manytomany.dao;
|
|
||||||
|
|
||||||
import com.baeldung.hibernate.manytomany.model.Project;
|
|
||||||
import com.baeldung.persistence.dao.common.IOperations;
|
|
||||||
|
|
||||||
public interface IProjectDao extends IOperations<Project>{
|
|
||||||
|
|
||||||
}
|
|
@ -1,16 +0,0 @@
|
|||||||
package com.baeldung.persistence.manytomany.dao.impl;
|
|
||||||
|
|
||||||
import org.springframework.stereotype.Repository;
|
|
||||||
import com.baeldung.hibernate.manytomany.model.Employee;
|
|
||||||
import com.baeldung.persistence.dao.common.AbstractHibernateDao;
|
|
||||||
import com.baeldung.persistence.manytomany.dao.IEmployeeDao;
|
|
||||||
|
|
||||||
@Repository
|
|
||||||
public class EmployeeDao extends AbstractHibernateDao<Employee> implements IEmployeeDao {
|
|
||||||
|
|
||||||
public EmployeeDao() {
|
|
||||||
super();
|
|
||||||
|
|
||||||
setClazz(Employee.class);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,17 +0,0 @@
|
|||||||
package com.baeldung.persistence.manytomany.dao.impl;
|
|
||||||
|
|
||||||
import org.springframework.stereotype.Repository;
|
|
||||||
import com.baeldung.hibernate.manytomany.model.Project;
|
|
||||||
import com.baeldung.persistence.dao.common.AbstractHibernateDao;
|
|
||||||
import com.baeldung.persistence.manytomany.dao.IProjectDao;
|
|
||||||
|
|
||||||
|
|
||||||
@Repository
|
|
||||||
public class ProjectDao extends AbstractHibernateDao<Project> implements IProjectDao {
|
|
||||||
|
|
||||||
public ProjectDao() {
|
|
||||||
super();
|
|
||||||
|
|
||||||
setClazz(Project.class);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,15 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE hibernate-configuration PUBLIC
|
|
||||||
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
|
|
||||||
"http://hibernate.org/dtd/hibernate-configuration-3.0.dtd">
|
|
||||||
<hibernate-configuration>
|
|
||||||
<session-factory>
|
|
||||||
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
|
|
||||||
<property name="hibernate.connection.password">tutorialmy5ql</property>
|
|
||||||
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/spring_hibernate_many_to_many</property>
|
|
||||||
<property name="hibernate.connection.username">tutorialuser</property>
|
|
||||||
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
|
|
||||||
<property name="hibernate.current_session_context_class">thread</property>
|
|
||||||
<property name="hibernate.show_sql">false</property>
|
|
||||||
</session-factory>
|
|
||||||
</hibernate-configuration>
|
|
@ -11,6 +11,7 @@
|
|||||||
<property name="hibernate.connection.password"></property>
|
<property name="hibernate.connection.password"></property>
|
||||||
<property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
|
<property name="hibernate.dialect">org.hibernate.dialect.H2Dialect</property>
|
||||||
<property name="hibernate.hbm2ddl.auto">create-drop</property>
|
<property name="hibernate.hbm2ddl.auto">create-drop</property>
|
||||||
|
<property name="hibernate.hbm2ddl.import_files">import-db.sql</property>
|
||||||
<property name="show_sql">false</property>
|
<property name="show_sql">false</property>
|
||||||
<mapping resource="com/baeldung/hibernate/criteria/model/Item.hbm.xml" />
|
<mapping resource="com/baeldung/hibernate/criteria/model/Item.hbm.xml" />
|
||||||
</session-factory>
|
</session-factory>
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
insert into item (item_id, item_name, item_desc, item_price) values(1,'item One', 'test 1', 35.12);
|
insert into item (item_id, item_name, item_desc, item_price) values(1,'item One', 'test 1', 35.12);
|
||||||
|
|
||||||
insert into item (item_id, item_name, item_desc, item_price) values(2,'Pogo stick', 'Pogo stick', 466.12);
|
insert into item (item_id, item_name, item_desc, item_price) values(2,'Pogo stick', 'Pogo stick', 466.12);
|
Loading…
x
Reference in New Issue
Block a user