zoukankan      html  css  js  c++  java
  • Hibernate入门心得

    准备阶段:

    Hibernate可用于各种类型的项目,要在项目中使用Hibernate,需要下载Hibernate的API.
    通过http://www.hibernate.org/网址可以下载到Hibernate的API和一些帮助文档.

    点击downloads —> release bundles即可下载

    下载解压后,在lib -> required目录下可找到项目中需要的jar包(API).

    官网上好像没有API的帮助文档,大家可以到这里下载:http://115.com/file/bensl2vy#hibernate api帮助文档.chm

    开发阶段:

    新建一个JAVA项目,目录结构如下:

    将准备的jar包引入到项目中。

    hibernate.cfg.xml:(Hibernate的配置文件,放在项目的src目录下):

     1 <?xml version='1.0' encoding='UTF-8'?>
     2 <!DOCTYPE hibernate-configuration PUBLIC
     3           "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
     4           "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
     5 
     6     <!-- Generated by MyEclipse Hibernate Tools.                   -->
     7 <hibernate-configuration>
     8 
     9     <session-factory>
    10         <!-- 设置驱动类 -->
    11         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
    12         <!-- 设置连接池默认个数 -->
    13         <property name="connection.pool_size">20</property>
    14         <!-- 设置JDBC URL -->
    15         <property name="connection.url">jdbc:mysql://localhost:3306/book</property>
    16         <!-- 设置数据库用户名 -->
    17         <property name="connection.username">username</property>
    18         <!-- 设置数据库用户密码 -->
    19         <property name="connection.password">passwrod</property>
    20         <!-- 设置SQL方言 -->
    21         <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
    22         <!-- 设置是否显示SQL语句 -->
    23         <property name="show_sql">true</property>
    24         <!-- 设置格式化SQL语句 -->
    25         <property name="format_sql">true</property>
    26         <property name="current_session_context_class">thread</property>
    27 
    28         <mapping resource="com/sunflower/bean/Person.hbm.xml" />
    29     </session-factory>
    30 
    31 </hibernate-configuration>

    这里配置的是MySQL数据库的驱动和连接,在开始的时候忘了加26行,结果调试的时候出错,得不到session,关于这个标签的使用,请参考如下文章:http://blog.sina.com.cn/s/blog_5ecfe46a0100e467.html 第28行是对象关系映射文件的配置.

    Person.java:(人的实体类,对应到关系数据库中的blog表)

     1 package com.sunflower.bean;
     2 
     3 import java.io.Serializable;
     4 
     5 /**
     6  * 博客用户的实体类
     7  * 
     8  * @author hanyuan
     9  * @time 2012-7-8 下午11:53:23
    10  */
    11 public class Person implements Serializable {
    12     private Integer id;
    13     private String username;
    14     private String password;
    15     private String caption;
    16     private String content;
    17 
    18     public Integer getId() {
    19         return id;
    20     }
    21 
    22     public void setId(Integer id) {
    23         this.id = id;
    24     }
    25 
    26     public String getUsername() {
    27         return username;
    28     }
    29 
    30     public void setUsername(String username) {
    31         this.username = username;
    32     }
    33 
    34     public String getPassword() {
    35         return password;
    36     }
    37 
    38     public void setPassword(String password) {
    39         this.password = password;
    40     }
    41 
    42     public String getCaption() {
    43         return caption;
    44     }
    45 
    46     public void setCaption(String caption) {
    47         this.caption = caption;
    48     }
    49 
    50     public String getContent() {
    51         return content;
    52     }
    53 
    54     public void setContent(String content) {
    55         this.content = content;
    56     }
    57 
    58 }

     第12~16行中的属性对应到数据库中的blog表的字段,其中id是主键索引.

    Person.hbm.xml:(对象关系映射配置文件)

     1 <?xml version="1.0"?>
     2 <!DOCTYPE hibernate-mapping PUBLIC 
     3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
     4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
     5 
     6 <hibernate-mapping>
     7     <!-- 设置实体类与数据库中表的对应关系 -->
     8     <class name="com.sunflower.bean.Person" table="blog">
     9 
    10         <id name="id" type="java.lang.Integer">
    11             <column name="id"></column>
    12             <!-- 将逐渐设置为自增 -->
    13             <generator class="increment"></generator>
    14         </id>
    15 
    16         <property name="username" type="java.lang.String" not-null="true">
    17             <column name="username"></column>
    18         </property>
    19 
    20         <property name="password" type="java.lang.String">
    21             <column name="password"></column>
    22         </property>
    23 
    24         <property name="caption" type="java.lang.String">
    25             <column name="caption"></column>
    26         </property>
    27 
    28         <property name="content" type="java.lang.String">
    29             <column name="content"></column>
    30         </property>
    31 
    32     </class>
    33 </hibernate-mapping>

    <class name="com.sunflower.bean.Person" table="blog">表示对象对应的表,<id>字段是必须要有的,表示主键。开始的时候没有加第13行,结果调试出错,需要加上<generator>标签,这里设置为自增类型.关于<generator>标签的使用,参考下列文章:http://sarin.iteye.com/blog/605712

    这个配置文件的是以hbm.xml结尾的,名字建议命名为对象名.hbm.xml,并且和实体类对象放在同一个包下,这样比较好找.

    Test.java:(调用Hibernate API 插入数据)

     1 package com.sunflower.main;
     2 
     3 import org.hibernate.Session;
     4 import org.hibernate.SessionFactory;
     5 import org.hibernate.Transaction;
     6 import org.hibernate.cfg.Configuration;
     7 
     8 import com.sunflower.bean.Person;
     9 
    10 public class Test {
    11     @SuppressWarnings("deprecation")
    12     public static void main(String[] args) {
    13         // 读取Hibernate的配置信息
    14         Configuration config = new Configuration();
    15         config.configure();
    16 
    17         // 读取配置里面的SessionFactory
    18         SessionFactory sessionFactory = config.buildSessionFactory();
    19         Session session = sessionFactory.getCurrentSession();
    20         Transaction transaction = session.beginTransaction();
    21 
    22         Person person = new Person();
    23         person.setUsername("邓光桥");
    24         person.setPassword("123");
    25         person.setCaption("Hibernate");
    26         person.setContent("Hibernate 入门实例");
    27 
    28         // 提交事务
    29         session.save(person);
    30         transaction.commit();
    31         sessionFactory.close();
    32     }
    33 }

     

  • 相关阅读:
    Pycharm在创建py文件时,如何自动添加文件头注释(类似于钩子特性)?
    Python 函数传递list,传递dict 以及*args和**kargs
    RobotFrameWork(三)数据类型
    shell中脚本变量和函数变量的作用域
    python之json
    Python命名规则
    gdb调试5--工程项目的断点调试
    First Missing Positive
    使用WinDbg下的gflags工具导致程序无法执行
    c++ 从标注输入流读取行
  • 原文地址:https://www.cnblogs.com/hanyuan/p/Hibernate.html
Copyright © 2011-2022 走看看