Hibernate
2021-04-17 08:27
标签:文件中 bean source script 两种 criteria highlight values class hibernate在hibernate.cfg.xml中配置数据库驱动,url,账号密码等 hibernate是有3种状态的,分别是瞬时、持久、脱管。其中new className()时数据库中还没有对应记录,这个时候className对象的状态是瞬时。 通过session的save把该对象保存在了数据库中,该对象也和session产生了联系,此时的状态应该是持久的。 最后把session关闭了,这个对象在数据库中有了对应的数据,但是已经和session失去了联系,相当于脱离了管理,状态是脱管。 hibernate有两种面向对象的查询方法,分别是criteria和hql hibernate有多对一,一对多,多对多的关系。例如Product和Category是多对一的关系,则应该在Product.hbm.xml文件中设置 要比较hibernate和传统的DBUtil的区别,就先看看传统方式是怎么进行crud的,如果是插入一个新的数据,则将对象的属性进行拆分,然后拼装成SQL语句。 在进行查询时,则是将sql数据的属性拼装成javabean对象,其操作时十分繁琐的。但是如果使用hibernate则直接对对象进行操作。 Hibernate 标签:文件中 bean source script 两种 criteria highlight values class 原文地址:https://www.cnblogs.com/tao7/p/12293988.htmlpublic class CategoryDAOImpl implements zhongfucheng.dao.CategoryDao{
@Override
publicvoidaddCategory(Category category) {
QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());
String sql = "INSERT INTO category (id, name, description) VALUES(?,?,?)";
try {
queryRunner.update(sql, new Object[]{category.getId(), category.getName(), category.getDescription()});
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Override
public Category findCategory(String id) {
QueryRunner queryRunner = new QueryRunner(Utils2DB.getDataSource());
String sql = "SELECT * FROM category WHERE id=?";
try {
Category category = (Category) queryRunner.query(sql, id, new BeanHandler(Category.class));
return category;
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
@Override
public List
假设在一个事务中做了两件事情,第一件事情执行成功但是第二件事情执行失败,则第一个事务执行也就不会生效,只有在表的类型是INNODB时才支持事务
hibernate支持级联操作,作为级联是指在数据库中多个表的对应关系,假设有一张教师信息表,表中的属性有教师的年龄手机号码家庭住址等信息,另一张表是老师和所带的班级之间的信息,一个班级对应一个老师,包括老师的手机号码,如果在表1 中改变老师张三的手机号码,如果设置了级联,则表二中张三的手机号码也会改变