diff --git a/spring-hibernate4/src/main/java/org/baeldung/persistence/model/Bar.hbm.xml b/spring-hibernate4/src/main/java/org/baeldung/persistence/model/Bar.hbm.xml deleted file mode 100644 index bbfbb73329..0000000000 --- a/spring-hibernate4/src/main/java/org/baeldung/persistence/model/Bar.hbm.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/spring-hibernate4/src/main/java/org/baeldung/persistence/model/Bar.java b/spring-hibernate4/src/main/java/org/baeldung/persistence/model/Bar.java index beca727200..410ad79b02 100644 --- a/spring-hibernate4/src/main/java/org/baeldung/persistence/model/Bar.java +++ b/spring-hibernate4/src/main/java/org/baeldung/persistence/model/Bar.java @@ -4,6 +4,7 @@ import java.io.Serializable; import java.util.Set; import javax.persistence.CascadeType; +import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; @@ -22,11 +23,13 @@ public class Bar implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "id") private int id; + @Column(name = "name") private String name; - @OneToMany(mappedBy = "bar", cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @OneToMany(mappedBy = "bar", cascade = CascadeType.ALL, fetch = FetchType.LAZY) @OrderBy(clause = "NAME DESC") private Set fooSet = Sets.newHashSet(); diff --git a/spring-hibernate4/src/main/java/org/baeldung/persistence/model/Foo.hbm.xml b/spring-hibernate4/src/main/java/org/baeldung/persistence/model/Foo.hbm.xml deleted file mode 100644 index db7ec3010b..0000000000 --- a/spring-hibernate4/src/main/java/org/baeldung/persistence/model/Foo.hbm.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/spring-hibernate4/src/main/java/org/baeldung/persistence/model/Foo.java b/spring-hibernate4/src/main/java/org/baeldung/persistence/model/Foo.java index 0c2007a945..974535e058 100644 --- a/spring-hibernate4/src/main/java/org/baeldung/persistence/model/Foo.java +++ b/spring-hibernate4/src/main/java/org/baeldung/persistence/model/Foo.java @@ -2,30 +2,29 @@ package org.baeldung.persistence.model; import java.io.Serializable; +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; -import org.hibernate.annotations.Fetch; -import org.hibernate.annotations.FetchMode; - @Entity public class Foo implements Serializable { @Id @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "id") private long id; - @Column(nullable = false) + @Column(name = "name") private String name; - @ManyToOne(targetEntity = Bar.class) + @ManyToOne(targetEntity = Bar.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER) @JoinColumn(name = "BAR_ID") - @Fetch(FetchMode.JOIN) private Bar bar = new Bar(); public Foo() { diff --git a/spring-hibernate4/src/test/java/hibernate.cfg.xml b/spring-hibernate4/src/test/java/hibernate.cfg.xml index b073f6e3e6..2167eada16 100644 --- a/spring-hibernate4/src/test/java/hibernate.cfg.xml +++ b/spring-hibernate4/src/test/java/hibernate.cfg.xml @@ -7,31 +7,30 @@ - - com.mysql.jdbc.Driver - jdbc:mysql://localhost:3306/spring_hibernate4_01?createDatabaseIfNotExist=true - tutorialuser - tutorialmy5ql + +com.mysql.jdbc.Driver +jdbc:mysql://localhost:3306/HIBERTEST2_TEST +root + + + +1 + + +org.hibernate.dialect.MySQLDialect + + +thread + + +org.hibernate.cache.internal.NoCacheProvider + + +true - - 1 + - - org.hibernate.dialect.MySQLDialect - - - thread - - - org.hibernate.cache.internal.NoCacheProvider - - - true - - - - - - + + diff --git a/spring-hibernate4/src/test/java/org/baeldung/persistence/hibernate/FooSortingPersistenceServiceData.java b/spring-hibernate4/src/test/java/org/baeldung/persistence/hibernate/FooSortingPersistenceServiceData.java new file mode 100644 index 0000000000..5b8696821d --- /dev/null +++ b/spring-hibernate4/src/test/java/org/baeldung/persistence/hibernate/FooSortingPersistenceServiceData.java @@ -0,0 +1,119 @@ +package org.baeldung.persistence.hibernate; + +import java.util.List; + +import org.baeldung.persistence.model.Bar; +import org.baeldung.persistence.model.Foo; +import org.hibernate.HibernateException; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.Transaction; +import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.AvailableSettings; +import org.hibernate.cfg.Configuration; +import org.hibernate.service.ServiceRegistry; + +import com.google.common.collect.Lists; + +public class FooSortingPersistenceServiceData { + private static ServiceRegistry serviceRegistry; + private static SessionFactory sessionFactory; + private static Configuration configuration; + private static StandardServiceRegistryBuilder builder; + + public FooSortingPersistenceServiceData() { + super(); + } + + public void createBars() { + + configWork(); + Session session = null; + Transaction tx = null; + session = sessionFactory.openSession(); + tx = session.getTransaction(); + try { + tx.begin(); + for (int i = 156; i < 160; i++) { + final Bar bar = new Bar(); + bar.setName("Bar_" + i); + final Foo foo = new Foo("Foo_" + (i + 120)); + foo.setBar(bar); + session.save(foo); + final Foo foo2 = new Foo(null); + if (i % 2 == 0) + foo2.setName("LuckyFoo" + (i + 120)); + foo2.setBar(bar); + session.save(foo2); + bar.getFooSet().add(foo); + bar.getFooSet().add(foo2); + session.merge(bar); + } + tx.commit(); + session.flush(); + } catch (final HibernateException he) { + if (tx != null) + tx.rollback(); + System.out.println("Not able to open session"); + he.printStackTrace(); + } catch (final Exception e) { + e.printStackTrace(); + } finally { + if (session != null) + session.close(); + } + + } + + public void createFoos() { + + configWork(); + Session session = null; + Transaction tx = null; + session = sessionFactory.openSession(); + tx = session.getTransaction(); + final List fooList = Lists.newArrayList(); + for (int i = 35; i < 46; i++) { + + final Foo foo = new Foo(); + foo.setName("Foo_" + (i + 120)); + final Bar bar = new Bar("bar_" + i); + bar.getFooSet().add(foo); + foo.setBar(bar); + fooList.add(foo); + + } + try { + tx.begin(); + for (final Foo foo : fooList) { + + session.save(foo.getBar()); + session.save(foo); + } + tx.commit(); + session.flush(); + } catch (final HibernateException he) { + if (tx != null) + tx.rollback(); + System.out.println("Not able to open session"); + he.printStackTrace(); + } catch (final Exception e) { + e.printStackTrace(); + } finally { + if (session != null) + session.close(); + } + } + + public void configWork() { + configuration = new Configuration(); + configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect"); + configuration.setProperty("dialect", "org.hibernate.dialect.MySQLDialect"); + configuration.setProperty(AvailableSettings.DRIVER, "com.mysql.jdbc.Driver"); + configuration.setProperty(AvailableSettings.URL, "jdbc:mysql://localhost:3306/HIBERTEST2_TEST"); + configuration.setProperty(AvailableSettings.USER, "root"); + configuration.setProperty(AvailableSettings.PASS, ""); + builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); + sessionFactory = configuration.addPackage("com.cc.example.hibernate").addAnnotatedClass(Foo.class).addAnnotatedClass(Bar.class).configure().buildSessionFactory(builder.build()); + } +} diff --git a/spring-hibernate4/src/test/java/org/baeldung/persistence/hibernate/FooSortingPersistenceServiceTest.java b/spring-hibernate4/src/test/java/org/baeldung/persistence/hibernate/FooSortingPersistenceServiceTest.java index afaa74ea27..fbc041ec02 100644 --- a/spring-hibernate4/src/test/java/org/baeldung/persistence/hibernate/FooSortingPersistenceServiceTest.java +++ b/spring-hibernate4/src/test/java/org/baeldung/persistence/hibernate/FooSortingPersistenceServiceTest.java @@ -5,6 +5,8 @@ import static org.junit.Assert.assertNull; import java.util.List; import java.util.Set; +import javax.imageio.spi.ServiceRegistry; + import org.baeldung.persistence.model.Bar; import org.baeldung.persistence.model.Foo; import org.baeldung.spring.PersistenceConfig; @@ -14,6 +16,7 @@ import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; +import org.hibernate.cfg.AvailableSettings; import org.hibernate.cfg.Configuration; import org.hibernate.criterion.Order; import org.junit.After; @@ -30,12 +33,25 @@ import org.springframework.test.context.support.AnnotationConfigContextLoader; public class FooSortingPersistenceServiceTest { private SessionFactory sf; private Session sess; + private static ServiceRegistry serviceRegistry; + private static Configuration configuration; + private static StandardServiceRegistryBuilder builder; @Before - public final void before() { - final Configuration configuration = new Configuration().configure(); - final StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); - sf = configuration.buildSessionFactory(builder.build()); + public void before() { + + // final FooSortingPersistenceServiceData fooData = new FooSortingPersistenceServiceData(); + // fooData.createBars(); + configuration = new Configuration(); + configuration.setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect"); + configuration.setProperty("dialect", "org.hibernate.dialect.MySQLDialect"); + configuration.setProperty(AvailableSettings.DRIVER, "com.mysql.jdbc.Driver"); + configuration.setProperty(AvailableSettings.URL, "jdbc:mysql://localhost:3306/HIBERTEST2_TEST"); + configuration.setProperty(AvailableSettings.USER, "root"); + configuration.setProperty(AvailableSettings.PASS, ""); + configuration.setProperty("hibernate.show_sql", "true"); + builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); + sf = configuration.addPackage("org.baeldung.persistence.model").addAnnotatedClass(Foo.class).addAnnotatedClass(Bar.class).configure().buildSessionFactory(builder.build()); sess = sf.openSession(); sess.beginTransaction(); }