📄 person.java
字号:
package events;
import java.util.*;
import org.hibernate.*;
import org.hibernate.cfg.Configuration;
public class Person {
private Long id; //标识符,都是由Hibernate自己赋值
public String name;
public Set emailAddr = new HashSet(); //用于关联,只需关联字符,会对应创建一个表.
public Set houses = new HashSet(); //用于关联,需要对应到House类
public Person() {}
public Long getId(){ return id;} public void setId(Long id){this.id=id;}
public String getName(){return name;} public void setName(String name){this.name=name;}
public Set getEmailAddr(){return emailAddr;} public void setEmailAddr(Set emailAddr){emailAddr=emailAddr;}
public Set getHouses(){return houses;} public void setHouses(Set houses){this.houses=houses;}
public static void createAndStorePerson(String name){
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
Person p = new Person();
p.name = name;
p.emailAddr.add("a17587052@126.com"); //向emailAddr关联字段添加数据(可以没有数据)
session.beginTransaction();
try{
House oneHouse = (House)session.load(House.class,1L); //当不存在时,会抛出异常
//House oneHouse = (House)session.get(House.class,1L,LockMode.READ); //当不存在时,返回的是NULL
p.houses.add(oneHouse);
session.save(p); //将模型中的数据存入表中,同时也会将相应数据存入到关联表中.
}catch(ObjectNotFoundException e){}
session.getTransaction().commit();
sessionFactory.close();
}
public static void updatePerson(){
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
Person onePerson = new Person(); onePerson.setId(1L);//不能使用load,否则无法更新数据,暂时只能声明成一个对象.
onePerson.name = "我的家";
session.beginTransaction();
House oneHouse = (House)session.load(House.class,1L); //load出id为1的House对象.
House twoHouse = (House)session.load(House.class,2L);
onePerson.houses.remove(oneHouse); //从关联中先删除一个House
onePerson.houses.add(twoHouse); //在关联中添加一个新的House
onePerson.emailAddr.clear(); //清除Set(也就是关联表)中的数据
session.update(onePerson); //更新,也将会对关联的表进行数据更新(注意:onePerson是new出来的对象,不是load出来的).
session.getTransaction().commit();
sessionFactory.close();
}
public static void deletePerson(){
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
session.beginTransaction();
Person onePerson = (Person)session.load(Person.class,1L);
session.delete(onePerson); //这也将会删除关联表中的数据(person_email和person_house).
session.getTransaction().commit();
sessionFactory.close();
}
public static void main(String args[]){
//createAndStorePerson("wangmiaohua");
//updatePerson();
//deletePerson();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -