java实现代码:
public class PersonTest {
private static SessionFactory sessionFactory;
static{
Configuration configuration = new Configuration();
//加载配置文件
configuration.configure();
//采用了工厂模式创建sessionFactory,
//该类是hibernate中比较重要的一个类
sessionFactory = configuration.buildSessionFactory();
}
@Test
public void testSavePerson(){
Session session = sessionFactory.openSession();
//hibernate中默认事务不是自动提交的,
//所以要先创建时候之后的修改操作才会生效
Transaction transaction = session.beginTransaction();
Person person = new Person();
//由于在映射文件中已经说明主键的产生方式是hibernate内部产生,所以在程序中不用设置主键
person.setPname("aa");
person.setPsex("男");
session.save(person);
//提交事务
transaction.commit();
session.close();
}
/**
* 1、必须从数据库中提取出数据再进行修改
* 2、session.get方法创建的对象利用的是默认的构造函数
*/
@Test
public void testUpdatePerson(){
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
/**
* 1、先把修改的那行提取出来
* 说明:
* Serializable是String和包装类的共同的父类
*/
Person person = (Person)session.get(Person.class,1L);
//将性别该为不想
person.setPsex("不详");
session.update(person);
transaction.commit();
session.close();
}
@Test
public void testQuery(){
Session session = sessionFactory.openSession();
List<Person> personList = session.createQuery("from Person").list();
System.out.println(personList.size());
}
@Test
public void testDelete(){
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
Person person = (Person)session.get(Person.class, 1L);
session.delete(person);
transaction.commit();
session.close();
}
}