hibernate的load能否直接查询数据库,而不是缓存 Hibernate有哪几种查询数据的方式
hibernate的load能否直接查询数据库,而不是缓存?
程序的操作时这样的:
1.先从数据库load一个id为固定值的记录;
2.修改这个记录
3.update到数据库
4.从数据库里再load相同id的记录,来判断是否已经更新到数据库。
上面会出现:第4步判断已经更新到数据库,当数据库繁忙的时候,实际并没有实际update到数据库,而再次load的时候是获取到缓存中的记录,导致判断已经更新到数据库中,而实际在后来查询数据库发现这笔记录并没有更新
Hibernate有哪几种查询数据的方式
3种
1)session对象的load和get方法,只能按主键查询
2)hql:语法与sql类似,但查询的是对象,支持所有的sql查询方式,可以直接返回对象集合,可以完成修改删除
3)Criteria:只能进行查询,可以不用写查询语句,通过java代码完成
如何用hibernate直接进行SQL语句查询
如何用hibernate直接进行SQL语句查询
public int getLogin(String username,String password)
{ String sql="select * from user_table where username=? and password=?"
SQLQuery query=getSession().createSQLQuery(sql).addEntity(UserTable.class)
query.setString(0,username)
query.setString(1,password)
return Integer.parseInt(query.uniqueResult().toString())
}
public static void main(String[] args) {
new UserTableDAO().getLogin("zhang","yuan")
}