`
activemq
  • 浏览: 26470 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

浅入冬眠

阅读更多
Hibernate 
Configuration
正如其名,Configuration 类负责管理Hibernate 的配置信息。Hibernate 运行时需要
获取一些底层实现的基本信息,其中几个关键属性包括:
1、数据库URL
2、数据库用户
3、数据库用户密码
4、数据库JDBC驱动类
1、 数据库dialect,用于对特定数据库提供支持,其中包含了针对特定数据库特性的实现,如Hibernate数据类型到特定数据库数据类型的映射等。
当然,还有指定Hibernate映射文件的位置。(*.hbm.xml)。

Hibernate配置有两种方法:
一、 属性文件配置。默认文件名是hibernate.properties。调用代码:
Configuration config = new Configuration();
config.addClass(Book.class);
二、 XML文件配置。默认文件名是hibernate.cfg.xml。
Configuration config = new Configuration().configure();

Session(会话):该接口是Hibernate使用最多的接口。Session不是线程安全的,它代表与数据库之间的一次操作。Session通过SessionFactory打开,在所有的工作完成后,需要关闭:它的概念介于Connection和Transaction之间。我们可以简单的认为它是已经装载对象的缓存或集合的一个独立工作单元。我们有时也称Session为持久化管理器,因为它是与持久化有关的操作的接口。
Hibernate会话并不是线程安全的因此应该被设计为每次只能在一个线程中使用。Hibernate会话与Web层的HttpSession没有任何关系。
Session session = sessionFactory.openSession();

Transaction:事务将应用代码从底层的事务实现中抽象出来——这可能是一个JDBC事务,一个JTA用户事务或者甚至是一个公共对象请求代理结构(CORBA)——允许应用通过一组一致的API控制事务边界。这有助于保持Hibernate应用在不同类型的执行环境或容器中的可移植性。
Transaction trans = session.beginTransaction ();

Query: Query(查询)接口允许你在数据库上执行查询并控制查询如何执行。查询语句使用HQL或者本地数据库的SQL方言编写。
Query query = session.createQuery(“from User”);

private static SessionFactory factory = null;
//先静态 后非静态
static{
try {
Configuration config = new Configuration().configure();

factory = config.buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
}

}

public Session getSession(){
Session sess = factory.openSession();
return sess;
}

Session.createQuery(sql).setString(0,””)
它的参数设置是从0开始的

String sql = "from Book b where b.author = ?) ";
Book book = (Book)session.createQuery(sql).setString(0,"任汝芬").uniqueResult();
只返回一个对象
属性查询
String sql = "select b.bookconcern from Book b where b.amount in (10,35) "
利用 distinct关键字 剔除返回集合中的重复记录
select distinct b.author from Book b where b.amount in (10,35)

都是用get方法 根据id获得对象然后set更新

1.  Book b = (Book)session.get(Book.class, new Integer(id));
b.setAuthor("大侠");
session.save(b);

2. UserInfo ui = (UserInfo)this.getHibernateTemplate().get(UserInfo.class,id);
ui.setPassword(pwd);

更新某一个字段
String sql = "update  Book  set remark = ?";
se.createQuery(sql).setString(0,"很好").executeUpdate();
删除某条记录
se.createQuery(sql).setString(0,"敏").executeUpdate();

查询出降序排列(desc)
String sql = "from Book as b order by b.price desc";

分组查询
b.bookconcern 中的bookconcern必须在聚合函数中
String hql = "select count(b),b.bookconcern from Book b group by b.bookconcern";
List li = new SessionUtil().sort();
Iterator it = li.iterator();
while(it.hasNext()){
Object[] rs = (Object[])it.next();
System.out.println(rs[0]+"  "+rs[1]);
}

1  高等教育出版社
2  清华大学出版社
1  天津大学出版社
1  外文出版社

选出出版社数量大于1的记录 (having count(b)>1 挑选出感兴趣的记录
Having子句是针对group by 返回结果集甄选语句
select count(b),b.bookconcern from Book b group by b.bookconcern having count(b)>1
2 清华大学出版社

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics