Skip to content

Commit

Permalink
Adjust JPA classes
Browse files Browse the repository at this point in the history
  • Loading branch information
andrei-punko committed Jan 20, 2024
1 parent 97d02ee commit 264fc41
Show file tree
Hide file tree
Showing 8 changed files with 97 additions and 81 deletions.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package by.andd3dfx.model.shop;

import lombok.Data;

import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;

@Data
@Entity
@DiscriminatorValue("1-size")
public class OneSizeItem extends ZeroSizeItem {

@Column
private Double length;

@Override
public String toString() {
return "OneSizeItem{" +
super.toString() +
", length=" + length +
'}';
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package by.andd3dfx.model.shop;

import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import lombok.Data;

@Data
@Entity
@DiscriminatorValue("3-size")
public class ThreeSizeItem extends TwoSizeItem {

@Column
private Double height;

@Override
public String toString() {
return "ThreeSizeItem{" +
super.toString() +
", height=" + height +
'}';
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package by.andd3dfx.model.shop;

import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import lombok.Data;

@Data
@Entity
@DiscriminatorValue("2-size")
public class TwoSizeItem extends OneSizeItem {

@Column
private Double width;

@Override
public String toString() {
return "TwoSizeItem{" +
super.toString() +
", width=" + width +
'}';
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

@Data
@Entity
@DiscriminatorValue("ITEM")
public class ItemWithoutSize extends BaseItem {
@DiscriminatorValue("0-size")
public class ZeroSizeItem extends BaseItem {

}
7 changes: 4 additions & 3 deletions hibernate-mappings/src/main/resources/hibernate.cfg.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,9 @@
<mapping class="by.andd3dfx.model.library.Address"/>
<mapping class="by.andd3dfx.model.library.Publisher"/>

<mapping class="by.andd3dfx.model.shop.ItemWithLengthAndDiameter"/>
<mapping class="by.andd3dfx.model.shop.ItemWithoutSize"/>
<mapping class="by.andd3dfx.model.shop.ItemWithThreeSizes"/>
<mapping class="by.andd3dfx.model.shop.ZeroSizeItem"/>
<mapping class="by.andd3dfx.model.shop.OneSizeItem"/>
<mapping class="by.andd3dfx.model.shop.TwoSizeItem"/>
<mapping class="by.andd3dfx.model.shop.ThreeSizeItem"/>
</session-factory>
</hibernate-configuration>
38 changes: 20 additions & 18 deletions hibernate-mappings/src/test/java/by/andd3dfx/HibernateMainIT.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,36 +3,38 @@
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;

import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;

import by.andd3dfx.model.library.Address;
import by.andd3dfx.model.library.Author;
import by.andd3dfx.model.library.Book;
import by.andd3dfx.model.library.Publisher;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import lombok.SneakyThrows;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.junit.Test;

public class HibernateMainIT {

@SneakyThrows
@Test
public void checkRecordsExistence() {
SessionFactory sf = new Configuration().configure().buildSessionFactory();
Session session = sf.openSession();
EntityManager entityManager = session.getEntityManagerFactory().createEntityManager();

getFromDbAndCheck(session, Book.class, 4);
getFromDbAndCheck(session, Address.class, 2);
getFromDbAndCheck(session, Author.class, 3);
getFromDbAndCheck(session, Publisher.class, 2);

getFromDbAndCheck(entityManager, "ItemWithoutSize", 1);
getFromDbAndCheck(entityManager, "ItemWithLengthAndDiameter", 2);
getFromDbAndCheck(entityManager, "ItemWithThreeSizes", 1);

session.close();
try (var sessionFactory = new Configuration().configure().buildSessionFactory()) {
try (var session = sessionFactory.openSession()) {
getFromDbAndCheck(session, Book.class, 4);
getFromDbAndCheck(session, Address.class, 2);
getFromDbAndCheck(session, Author.class, 3);
getFromDbAndCheck(session, Publisher.class, 2);

EntityManager entityManager = session.getEntityManagerFactory().createEntityManager();
getFromDbAndCheck(entityManager, "ZeroSizeItem", 1);
getFromDbAndCheck(entityManager, "OneSizeItem", 1);
getFromDbAndCheck(entityManager, "TwoSizeItem", 2);
getFromDbAndCheck(entityManager, "ThreeSizeItem", 1);
}
}
}

private void getFromDbAndCheck(Session session, Class clazz, int expectedItemsCount) {
Expand Down

0 comments on commit 264fc41

Please sign in to comment.