您的位置:首页 > 其它

Hibernate之全面认识

2016-12-27 09:08 176 查看

Hibernate体系架构

Hibernate通过配置文件管理底层的JDBC连接,将用户从原始的JDBC释放出来,使得用户无需再关注底层的JDBC操作,而是以面向对象的方式进行持久化操作。这种全面的解决方案架构如下(插图来自官方文档 manual:Comprehensive architecture)

1 <?xml version="1.0"  encoding="UTF-8"?>
2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
4
5 <hibernate-mapping package="hib">
6     <class name="News" table="news_table">
7         <id name="id" column="id" type="int">
8             <generator class="identity" />
9         </id>
10         <property name="title" type="string" column="title" />
11         <property name="content" type="string" column="content" />
12     </class>
13 </hibernate-mapping>


View Code
3.不使用任何配置文件,所有配置都以编码方式(.setProperty(key,value))来创建Configuration对象

1 public static void noConfigFile() {
2     Configuration cfg = new Configuration()
3             .addClass(hib.News.class)
4             .setProperty("hibernate.connection.driver_class","com.mysql.jdbc.Driver")
5             .setProperty("hibernate.connection.url","jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8")
6             .setProperty("hibernate.connection.username", "root")
7             .setProperty("hibernate.connection.password", "")
8             .setProperty("hibernate.c3p0.max_size", "20")
9             .setProperty("hibernate.c3p0.min_size", "1")
10             .setProperty("hibernate.c3p0.max_statements", "100")
11             .setProperty("hibernate.c3p0.timeout", "5000")
12             .setProperty("hibernate.c3p0.idle_test_period", "3000")
13             .setProperty("hibernate.c3p0.acquire_increment", "2")
14             .setProperty("hibernate.validate", "true")
15             .setProperty("hibernate.dialect", "org.hibernate.dialect.MySQLDialect")
16             .setProperty("hibernate.hbm2dll.auto", "create")
17             .setProperty("hibernate.show_sql", "true");
18     SessionFactory sf = cfg.buildSessionFactory();
19     Session sess = sf.openSession();
20     Transaction tx = sess.beginTransaction();
21     News n = new News();
22     n.setTitle("举头望明月");
23     n.setContent("低头思故乡");
24     sess.save(n);
25     tx.commit();
26     sess.close();
27 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: