Annotated Classes

Create a database and annotation classes 

Following is the database diagram and ddl scripts



CREATE TABLE student(
STUDENT_ID INTEGER NOT NULL,
STUDENT_NAME VARCHAR(20) NOT NULL,
STUDENT_AGE VARCHAR(10) NOT NULL,
PRIMARY KEY (STUDENT_ID)
)

CREATE TABLE student_information(
STUDENT_ID INTEGER NOT NULL,
ADDRESS VARCHAR(100) NOT NULL,
REGISTRY_NUMBER VARCHAR(20),
PHONE_NUMBER VARCHAR(20),
ENLISTED DATE NOT NULL,
PRIMARY KEY (STUDENT_ID) ,
CONSTRAINT FK_STUDENT_ID FOREIGN KEY (STUDENT_ID) REFERENCES student (STUDENT_ID)
)
CREATE TABLE projects (
PROJECT_ID INTEGER NOT NULL,
TITLE VARCHAR(20) NOT NULL,
SEMESTER VARCHAR(20) NOT NULL,
STUDENT_ID INTEGER NOT NULL,
PRIMARY KEY (PROJECT_ID),
CONSTRAINT FK_STUDENT_TRANSACTION_STUDENT_ID FOREIGN KEY (STUDENT_ID)
REFERENCES student (STUDENT_ID) ON DELETE CASCADE ON UPDATE CASCADE
)
CREATE TABLE class (
CLASS_ID INTEGER NOT NULL,
TITLE VARCHAR(20) NOT NULL,
SEMESTER VARCHAR(20) NOT NULL,
PRIMARY KEY (CLASS_ID)
)
CREATE TABLE student_class (
ID_STUDENT INTEGER NOT NULL,
CLASS_ID INTEGER NOT NULL,
PRIMARY KEY (ID_STUDENT,CLASS_ID),
CONSTRAINT FK_CLASS_ID FOREIGN KEY (CLASS_ID) REFERENCES class (CLASS_ID),
CONSTRAINT FK_ID_STUDENT FOREIGN KEY (ID_STUDENT) REFERENCES student (STUDENT_ID)
)


Annotaded Classes

student
---------------------------------------------------------------------------------
@Entity
@Table(name = "student")
public class Student implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private Integer studentId;
private String studentName;
private StudentInformation studentInfo;
private Set<Project> studentProjects = new HashSet<Project>(0);
private Set<Class> studentClasses = new HashSet<Class>(0);
public Student() {
}
public Student(String studentName, String studentAge) {
this.studentName = studentName;
this.studentAge = studentAge;
}

@Id
@Column(name = "STUDENT_ID")
public Integer getStudentId() {
return this.studentId;
}
public void setStudentId(Integer studentId) {
this.studentId = studentId;
}

@Column(name = "STUDENT_NAME")
public String getStudentName() {
return this.studentName;
}
public void setStudentName(String studentName) {
this.studentName = studentName;
}

@OneToOne(mappedBy = "student", cascade = CascadeType.ALL)
public StudentInformation getStudentInfo() {
return studentInfo;
}
public void setStudentInfo(StudentInformation studentInfo) {
this.studentInfo = studentInfo;
}

@OneToMany(fetch = FetchType.LAZY, mappedBy = "student")
public Set<Project> getStudentProjects() {
return studentProjects;
}
public void setStudentProjects(Set<Project> studentProjects) {
this.studentProjects = studentProjects;
}

public static long getSerialversionuid() {
return serialVersionUID;
}
}


student_information (1-1)
---------------------------------------------------------------------------------
@Entity
@Table(name = "student_information")
public class StudentInformation {
private Integer studentId;
private String address;
private Date enlisted;
private Student student;

@Id
@Column(name = "STUDENT_ID")
public Integer getStudentId() {
return studentId;
}
public void setStudentId(Integer studentId) {
this.studentId = studentId;
}
@Column(name = "ADDRESS")
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}

@Temporal(TemporalType.DATE)
@Column(name = "ENLISTED")
public Date getEnlisted() {
return enlisted;
}
public void setEnlisted(Date enlisted) {
this.enlisted = enlisted;
}

@OneToOne(fetch = FetchType.LAZY)
@PrimaryKeyJoinColumn or @joincolumn(name = "student_id")
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
}


projects (1-M)

---------------------------------------------------------------------------------
@Entity@Table(name = "projects")public class Project implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private Integer projectId;
private String title;
private Student student;

public Project(Integer projectId, String title, String semester) {
this.projectId = projectId;
this.title = title;
this.semester = semester;
}
@Id
@Column(name = "PROJECT_ID")
public Integer getProjectId() {
return projectId;
}
public void setProjectId(Integer projectId) {
this.projectId = projectId;
}
@Column(name = "TITLE")
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "STUDENT_ID")
public Student getStudent() {
return student;
}

public void setStudent(Student student) {
this.student = student;
}
}

class (M-M)

---------------------------------------------------------------------------------

@Entity
@Table(name = "class")
public class Class implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private Integer classID;
private String title;
private String semester;
private Set<Student> assignedStudents = new HashSet<Student>(0);

public Class(Integer classID, String title, String semester) {
this.classID = classID;
this.title = title;
this.semester = semester;
}
@Id
@Column(name = "CLASS_ID")
public Integer getClassID() {
return classID;
}
public void setClassID(Integer classID) {
this.classID = classID;
}
@Column(name = "TITLE")
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
@Column(name = "SEMESTER")
public String getSemester() {
return semester;
}
public void setSemester(String semester) {
this.semester = semester;
}

@ManyToMany(fetch = FetchType.LAZY, mappedBy = "studentClasses")
public Set<Student> getAssignedStudents() {
return assignedStudents;
}

public void setAssignedStudents(Set<Student> assignedStudents) {
this.assignedStudents = assignedStudents;
}
}

--------------------------------------------------------------------

src
hibernate.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.url">jdbc:postgresql://localhost/eSteward_V3</property>
<property name="hibernate.connection.username">postgres</property>
<property name="hibernate.connection.password">admin</property>
<property name="connection.pool_size">10</property>

<mapping class="com.ensky.model.entities.ActivityDetail" />
<mapping class="com.ensky.model.entities.ActivityHeader" />

</session-factory>
</hibernate-configuration>


HibernateUtil .java
package com.ensky.model.util;

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

private static final SessionFactory sessionFactory;

static {
try {
Configuration cfg = new Configuration()
.configure("hibernate.cfg.xml");
StandardServiceRegistryBuilder sb = new StandardServiceRegistryBuilder();
sb.applySettings(cfg.getProperties());
StandardServiceRegistry standardServiceRegistry = sb.build();
sessionFactory = cfg.buildSessionFactory(standardServiceRegistry);
} catch (Throwable th) {
System.err.println("Enitial SessionFactory creation failed" + th);
throw new ExceptionInInitializerError(th);
}
}

public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
---------------------------------------------------------------------------------------------------------------------------------
log4j.properties

log4j.rootLogger=INFO, CA, FA

#Console Appender
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.CA.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}-%x-%-5p-%c{5}:%m%n

#File Appender
log4j.appender.FA=org.apache.log4j.FileAppender
log4j.appender.FA.File=sample.log
log4j.appender.FA.layout=org.apache.log4j.PatternLayout
log4j.appender.FA.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}-%x-%-5p-%c{5}:%m%n

# Set the logger level of File Appender to WARN
log4j.appender.FA.Threshold = INFO

eg: static final Logger logger = Logger.getLogger(CreateBranchBean.class);

No comments:

Post a Comment