Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4113458
  • 博文数量: 626
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 11080
  • 用 户 组: 普通用户
  • 注册时间: 2012-08-23 13:08
文章分类

全部博文(626)

文章存档

2015年(72)

2014年(48)

2013年(506)

分类: Java

2013-09-18 09:40:12

JDK6笔记(6)----JDBC4.0高级应用(2)


3.4)Hibernate配置文件(Hibernate Configuration File)
在你的应用程序中典型的仅有一个hibernate.cfg.xml文件。
在配置文件中有几个可选项,在上面有一个完整的列表。
一般来说,configuration定义了映射的文件、数据库的连接信息、数据库使用的哪一种SQL等。
Dialect类封装了数据库所用各种SQL语句的差异。例如:
在Oracle中的SELECT语句:
SELECT * FROM BOOK Where rownum<10
但是在Microsoft SQLServer中为:
SELEC TOP 10 * from BOOK
Dialect类支持绝大多数商业和开源数据库系统。
highlight.show_sql属性:将打印标准输出,即打印所有执行的SQL语句。
hibernate.hbm2ddl.auto属性:将自动创建映射文件定义的数据库表。
见例子:
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"">

 
    true
    org.hibernate.dialect.DerbyDialect
    org.apache.derby.jdbc.ClientDriver
   

    create-drop
    sa
    password
   
 

3.5)Hibernate API
Hibernate API包含了所有的资源,如:支持持久化的,执行映射的,数据库事务,还有两个丰富的查询模型。
这些资源存在于org.hibernate.* 。
(1)SessionFactory
包含了数据库元数据和执行持久化操作的Java类信息。
(2)Session
是所有持久化操作的入口点。
它提供了简单的方法来载入和保存对象,也作为工厂方法创建事务,查询和条件接口。
Session存活时间很短,每个请求都会创建和销毁它。
(3)Query
接口,使用类似SQL语言(称为HQL,即Hibernate Query Language)来检索对象。
(4)Criteria
接口,比查询接口有更多的面向对象。
Criteria API在运行时动态查询是非常有效的。

4、Hibernate Example
用Hibernate连接Apache Derby数据库。
1)环境变量的设置
在MS-DOS环境下:
set JAVA_HOME=C:/JDK
set DERBY_INSTALL=%JAVA_HOME%/db
set CLASSPATH=%CLASSPATH%;%DERBY_INSTALL%/lib/derby.jar;%DERBY_INSTALL%/lib/derbytools.jar;
%DERBY_INSTALL%/LIB/derbynet.jar;
cd %DERBY_INSTALL%/frameworks/NetworkServer/bin
startNetworkServer.bat
现在,可以用Hibernate连接Derby数据库了。
2)创建和存储SessionFactory。应用程序将共享静态的SessionFactory。
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil{
  private static SessionFactory sf;
//当运行configure.buildSessionFactory()时,Hibernate会在项目的根目录下寻找hibernate.cfg.xml文件。
  static {
    sf=new Configuration().configure().buildSessionFactory();
    }
  public static Session currentSession(){
    return sf.openSession();
    }
  public static void close(Session session){
    session.close();
    }
  }
--------------------------------------------
2)Book Manager的例子
import java.util.Date;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import mydb.Book;
import mydb.util.HibernateUtil;
public class BookManager{
  Session s=HibernateUtil.currentSession();
  public void save(Book book){
    try{
      Transaction tx=s.beginTransaction();
      s.saveOrUpdate(book);
      tx.commit();
    }catch(HibernateException e){
      e.printStackTrace();
    }
  }
  public static void main(String[] args){
    Book book =new Book();
    book.setTitle("Lucas: nine months and counting.");
    book.setCreated(new Date());
    BookManager manager=new BookManager();
    manager.save(book);
  }

阅读(722) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~