Skip to content
Snippets Groups Projects
Commit d00d5c4e authored by Jan Kožusznik's avatar Jan Kožusznik
Browse files

solution

parent e33675c8
Branches solution
No related merge requests found
Pipeline #124 failed with stages
in 0 seconds
package koz01.java2.lab09;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.SequenceGenerator;
import lombok.EqualsAndHashCode;
import lombok.Getter;
@MappedSuperclass
@EqualsAndHashCode
public abstract class BaseEntity {
@Id
@Getter
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_post")
@SequenceGenerator(name = "seq_post", allocationSize = 1)
private Long id;
}
package koz01.java2.lab09;
import java.util.Set;
import javax.persistence.Entity;
public class Course {
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
public class Course extends BaseEntity {
private Set<Student> students;
private String code;
......
......@@ -20,7 +20,7 @@
xsi:schemaLocation="
http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
<persistence-unit name="primary" transaction-type="RESOURCE_LOCAL">
<persistence-unit name="lab09" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<!-- HSQL -->
......@@ -29,7 +29,7 @@
data source, this example data source is just for development and testing! -->
<properties>
<!-- Properties for Hibernate -->
<property name="javax.persistence.jdbc.url" value="jdbc:derby:db/lab09;create=true" />
<property name="javax.persistence.jdbc.url" value="jdbc:derby:db/demoDb;create=true" />
<property name="javax.persistence.jdbc.driver" value="org.apache.derby.jdbc.EmbeddedDriver" />
<property name="hibernate.show_sql" value="true" />
......
package koz01.java2.lab09;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertNull;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Persistence;
import javax.persistence.Query;
import org.junit.jupiter.api.Test;
import lombok.extern.log4j.Log4j2;
@Log4j2
public class Lab09Test {
@Test
public void obtainEntityManager() {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("lab09");
assertNotNull(emf);
EntityManager em = emf.createEntityManager();
assertNotNull(em);
emf.close();
}
@Test
public void createCourse() {
for (int i = 0; i < 10; i++) {
EntityManager em = createEntityManager();
EntityTransaction trx = em.getTransaction();
trx.begin();
Course course = Course.builder().code("46012").name("Java II").build();
assertNull(course.getId());
em.persist(course);
assertNotNull(course.getId());
Long id = course.getId();
em.flush();
trx.commit();
em.close();
em = createEntityManager();
Course course2 = em.find(Course.class, id);
assertNotNull(course2);
log.info("course == course2: {}", course == course2);
em.close();
}
}
@Test
public void removeCourse() {
EntityManager em = createEntityManager();
Course course = Course.builder().code("46012").name("Java II").build();
em.getTransaction().begin();
em.persist(course);
Long id = course.getId();
em.flush();
em.getTransaction().commit();
em.close();
em = createEntityManager();
course = em.find(Course.class, id);
assertNotNull(course);
em.close();
em = createEntityManager();
course = em.find(Course.class, id);
em.getTransaction().begin();
em.remove(course);
em.flush();
em.getTransaction().commit();
log.info("course = {} was not deleted with id = {}", course, id);
em.close();
em = createEntityManager();
course = em.find(Course.class, id);
assertNull(course);
em.close();
}
@Test
public void query() {
EntityManager em = createEntityManager();
Query query = em.createQuery(
"select c from Course as c where c.name LIKE ?1");
query.setParameter(1, "%Java%");
List list = query.getResultList();
for (Object obj : list) {
log.info("obj: {}, id: {}", obj, ((BaseEntity) obj).getId());
}
em.close();
}
private EntityManager createEntityManager() {
return Persistence.createEntityManagerFactory("lab09")
.createEntityManager();
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment