学生.java
package Model;
import java.util.Set;
public class Student {
private int studentID;
private String name;
private String city;
private Set<Address> AddressList;
private Set<Contact> ContactList;
public Set<Contact> getContactList() {
return ContactList;
}
public void setContactList(Set<Contact> contactList) {
ContactList = contactList;
}
public Set<Address> getAddressList() {
return AddressList;
}
public void setAddressList(Set<Address> addressList) {
AddressList = addressList;
}
public int getStudentID() {
return studentID;
}
public void setStudentID(int studentID) {
this.studentID = studentID;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
地址.java
package Model;
public class Address {
private int Aid;
private String fullAddress;
//private Student student;
/*public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}*/
public int getAid() {
return Aid;
}
public void setAid(int aid) {
Aid = aid;
}
public String getFullAddress() {
return fullAddress;
}
public void setFullAddress(String fullAddress) {
this.fullAddress = fullAddress;
}
}
联系方式.java
package Model;
public class Contact {
private int contactId;
private String mobileNo;
public int getContactId() {
return contactId;
}
public void setContactId(int contactId) {
this.contactId = contactId;
}
public String getMobileNo() {
return mobileNo;
}
public void setMobileNo(String mobileNo) {
this.mobileNo = mobileNo;
}
}
学生.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Model.Student" table="Student">
<id name="studentID" type="int">
<column name="StudentID" />
<generator class="identity" />
</id>
<property name="name" type="java.lang.String"/>
<property name="city" type="java.lang.String"/>
<set name="AddressList">
<key column="studentID"/>
<one-to-many class="Model.Address"/>
</set>
<set name="ContactList">
<key column="studentID"/>
<one-to-many class="Model.Contact"/>
</set>
</class>
地址.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Model.Address" table="Address">
<id name="Aid" type="int">
<column name="Aid" />
<generator class="identity" />
</id>
<property name="fullAddress" type="java.lang.String"/>
</class>
联系人.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="Model.Contact" table="Contact">
<id name="contactId" type="int">
<column name="contactId" />
<generator class="identity" />
</id>
<property name="mobileNo" type="java.lang.String"/>
</class>
主要方法。
public static void main(String[] args)
{
Configuration cfg=new Configuration();
cfg.configure("hibernate.cfg.xml");
SchemaExport se=new SchemaExport(cfg);
se.setOutputFile("D:\\abc.sql");
se.create(true,true);//create(boolean script, boolean export)
System.out.println("------------------Saving of Student--------------------");
Student student =new Student();
student.setName("Yograj");
student.setCity("Nanded");
Set<Address> addressList=new HashSet<Address>();
Address address=new Address();
address.setFullAddress("Chikhali Nanded");
addressList.add(address);
address=null;
address=new Address();
address.setFullAddress("karvenagar Pune");
addressList.add(address);
student.setAddressList(addressList);
Set<Contact> contactList=new HashSet<Contact>();
Contact contact=new Contact();
contact.setMobileNo("9403330577");
contactList.add(contact);
contact=null;
contact=new Contact();
contact.setMobileNo("9890864805");
contactList.add(contact);
student.setContactList(contactList);
boolean result=new StudentServices().SaveStudent(student);
if(result)
{
System.out.println("------------------Save Student succ..--------------------");
}
else
{
System.out.println("------------------Saving failed--------------------");
}
System.out.println("------------------Student Details--------------------");
List<Student> studentList=new StudentServices().GetStudentlist();
for (Student stud : studentList) {
System.out.println("Name:"+stud.getName());
System.out.println("City:"+stud.getCity());
for (Address add : stud.getAddressList()) {
System.out.println("Full Address:"+add.getFullAddress());
}
for (Contact cont : stud.getContactList()) {
System.out.println("Full Address:"+cont.getMobileNo());
}
}
System.out.println("Execution over.");
}
学生服务.Java
package Service;
import java.util.List;
import javassist.runtime.Inner;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;
import org.hibernate.sql.JoinType;
import Model.Address;
import Model.Contact;
import Model.Student;
public class StudentServices {
public boolean SaveStudent(Student student) {
try {
Configuration cfg = new Configuration().configure();
SessionFactory sf = cfg.buildSessionFactory();
Session session = sf.openSession();
Transaction transaction = session.beginTransaction();
session.save(student);
for (Address add : student.getAddressList()) {
session.save(add);
}
for (Contact cont : student.getContactList()) {
session.save(cont);
}
transaction.commit();
session.close();
return true;
} catch (HibernateException e) {
return false;
}
}
public List<Student> GetStudentlist() {
try {
Configuration cfg = new Configuration().configure();
SessionFactory sf = cfg.buildSessionFactory();
Session session = sf.openSession();
Transaction transaction = session.beginTransaction();
Criteria criteria = session.createCriteria(Student.class, "Student")
.createAlias("Student.AddressList", "Address",JoinType.INNER_JOIN)
.createAlias("Student.ContactList", "Contact",JoinType.INNER_JOIN);
List<Student> studentList = criteria.list();
transaction.commit();
session.close();
return studentList;
} catch (HibernateException e) {
return null;
}
}
}
当我执行 main 方法时,hibernate 将创建数据库和表。在所有表中它将存储记录,但是当我使用标准 API 获取记录时,它给我错误“org.hibernate.LazyInitializationException”。