Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

时间:2021-07-29 22:00:38

导航{

Hibernate 在三层框架中的位置。
一,第一个Hibernate 项目。
【1】导入jar包
【2】创建我们的数据库,和表  (数据库名:day29hibernate_test01  表名: s_user)
[3] 编写 javaBean 文件和 配置文件 
【4】编写test.java 文件,测试项目。
二,分析常见的Api 字段。
【1】Hibernate  的执行过程。
【2】对Configuraction  详解。
 【3】 对 SessionFactory 的详解。
【4】详解 Session 对象
(1)在数据库中添加一条数据。
(2)修改一条数据,需要先查找到该对象,然后才能修改对象中的属性
(3)删除一条数据,调用 delete 方法。 需要先找出该对象, 才能执行删除。
(5) 查询一条记录,查询 id 为 2 的记录。
(6)查询所有,三种方式。
【5】 详解 Trancastion 对象。
【6】 详解Query 对象
【7】详解 Criteria  对象
(1) 查询所有
(2)查询username 属性值为 jack 的记录。(比较是否相等)
(3)查询username 属性中有  a 这个字母的(Like)
总结:其它类似作用的方法调用
【8】生成一个 HibernateUtils  的类。
三,核心配置文件详解(hibernate.cfg.xml)  (多读)
四,映射配置文件(PO.hbm.xml)
【1】对PO (持久化类)的要求 :
1.1    持久化对象的唯一标识 OID
1.2    区分自然主键和代理主键
1.3    基本数据与包装类型
 【2】映射文件配置详解(记住)

}

Hibernate 在三层框架中的位置。

Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

一,第一个Hibernate 项目。 

地址:https://github.com/gengzi/Hibernate

【1】导入jar包

解压 Hibernate  的源码包 将加压文件中的 hibernate3.jar 导入项目,是核心jar 包 Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
打开依赖的jar 包,选择 jpa 和 required 中的jar 文件 Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
操作数据库,需要对应的数据库的驱动jar 包 Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
下面这些都是必须要导入的jar 包     Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。  

【2】创建我们的数据库,和表  (数据库名:day29hibernate_test01  表名: s_user)

Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

[3] 编写 javaBean 文件和 配置文件 

{  两个配置文件:(1) 映射文件(对应javabean 对象)                           (2) 核心配置文件
}
编写属性和 数据库创建一样的javaBean 对象。 Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
创建一个跟 User.java  的名字一样的  javabean名.hbm.xml  的映射文件 { 规范要求:映射文件的名字前面与javabean 名字一样,在同一包下。 } 配置文件需要导入  dtd 约束。 约束文件  Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
  、  (小知识: 一般dtd 文件中头注释部分,都会把约束写出来) 在 映射文件中 导入 hibernate-mapping-3.0.dtd 的约束 User.hbm.xml  
   
   
  1. <?xml version="1.0" encoding="UTF-8"?>
  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. <class name="cn.edu.aynu.rjxy.domain.User" table="s_user">
  8. <!--主键-->
  9. <id name="id">
  10. <!--native意思:原生-->
  11. <generator class="native"></generator>
  12. </id>
  13. <!--普通字段-->
  14. <property name="username"></property>
  15. <property name="password"></property>
  16. </class>
  17. </hibernate-mapping>
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
配置核心约束文件

位置:类路径(classpathsrc-->WEB-INF/classes

名称:hibernate.cfg.xml

导入hibernate-configuration-3.0.dtd   的约束头

hibernate.cfg.xml   Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

    
    
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory>
  7. <!--连接数据库的基本四项-->
  8. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  9. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/day29hibernate_test01</property>
  10. <property name="hibernate.connection.username">root</property>
  11. <property name="hibernate.connection.password">111</property>
  12. <!--添加映射文件-->
  13. <mapping resource="cn/edu/aynu/rjxy/domain/User.hbm.xml"/>
  14. </session-factory>
  15. </hibernate-configuration>
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
 复制User.hbm.xml  的全路径,需要删掉 src 前面的内容。
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

【4】编写test.java 文件,测试项目。

   
   
  1. package cn.edu.aynu.rjxy.test;
  2. import org.hibernate.SessionFactory;
  3. import org.hibernate.cfg.Configuration;
  4. import org.hibernate.classic.Session;
  5. import cn.edu.aynu.rjxy.domain.User;
  6. publicclassTest01{
  7. publicstaticvoid main(String args[]){
  8. test();
  9. }
  10. publicstaticvoid test(){
  11. // [1]加载配置文件获得核心配置对象
  12. Configuration configuration =newConfiguration().configure();
  13. // [2]获得工厂 SessionFactory,相当于连接池( build 构造)
  14. SessionFactory buildSessionFactory = configuration
  15. .buildSessionFactory();
  16. // [3]获得会话session,相当于链接Connection
  17. Session openSession = buildSessionFactory.openSession();
  18. // 【4】 保存一个user 信息
  19. User user =newUser();
  20. user.setPassword("111");
  21. user.setUsername("耿帅佳");
  22. // [5] 操作
  23. openSession.save(user);
  24. // [6] 关闭资源
  25. openSession.close();
  26. buildSessionFactory.close();
  27. }
  28. }
图片:Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
控制台打印 sql 语句 。
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
运行结果 : Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

二,分析常见的Api 字段。

【1】Hibernate  的执行过程。

Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

【2】对Configuraction  详解。

   
   
  1. package cn.edu.aynu.rjxy.api;
  2. import org.hibernate.cfg.Configuration;
  3. import cn.edu.aynu.rjxy.domain.User;
  4. publicclassConfiguration_test{
  5. // 详解 Configuraction 对象
  6. publicvoid fun1(){
  7. // 1.1 调用configure() 方法=> 加载src下名为hibernate.cfg.xml
  8. // (调用configuraction() 方法 => 加载src下的 hibernate.properties)
  9. Configuration configuration =newConfiguration().configure();
  10. // <三种加载核心配置文件的方式:>
  11. // 1.2 如果配置文件不符合默认加载规则.我们可以调用
  12. // new Configuration().configure(file); 通过file加载
  13. // new Configuration().configure(path); 通过指定的路径加载
  14. // <加载映射文件的两种方式:>
  15. // 1.3 可以通过Configuration对象加载 映射文件(不推荐)(映射文件就是:User.hbm.xml)
  16. // 手动配置(不推荐)
  17. // configuration.addClass(User.class);
  18. // configuration.addResource("cn/edu/aynu/rjxy/domain/User.hbm.xml");
  19. // 推荐hibernate.cfg.xml 使用 mapping 属性引入配置文件
  20. configuration.addClass(User.class);
  21. configuration.addResource("cn/edu/aynu/rjxy/domain/User.hbm.xml");
  22. // <ORM(User.hmb.xml) 映射文件编写规范>
  23. // 规范: 1>orm映射文件名称与实体的简单类名一致 (User.hbm.xml User.java )
  24. // 2>orm映射文件 需要与实体的类在同一包下
  25. }
  26. }
图解:
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

 【3】 对 SessionFactory 的详解。

Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
   
   
  1. package cn.edu.aynu.rjxy.api;
  2. import org.hibernate.SessionFactory;
  3. import org.hibernate.cfg.Configuration;
  4. // 对sessionFactory 的详解
  5. publicclassSessionFactory_test{
  6. //
  7. publicvoid fun1(){
  8. // 1加载配置
  9. Configuration conf =newConfiguration().configure();
  10. // 2 根据Configuration 配置信息创建 SessionFactory
  11. // sessionFactory 可以理解为一个连接池,连接池中包含很多连接,而session 就相当于连接池中的 connection 对象
  12. SessionFactory sf = conf.buildSessionFactory();
  13. // 3 获得session
  14. // 3.1 openSession => 获得一个全新的Session对象
  15. sf.openSession();
  16. // 3.2 getCurrentSession => 获得与当前线程绑定的session对象
  17. // 调用getCurrentSession 需要加上一个配置: <property
  18. // name="hibernate.current_session_context_class">thread</property>
  19. sf.getCurrentSession();
  20. }
  21. }
图解:Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

【4】详解 Session 对象

测试我们常见的数据库操作,增(insert),删(delete),改(update),查(查一条,查所有,按条件查询)(select)

(1)在数据库中添加一条数据。

调用了 session 的 save() 方法(主键自增)
    
    
  1.    User user =newUser();
  2. user.setUsername("test");
  3. user.setPassword("111");
  4. // 调用session 对象的 save 方法,来保存对象到数据库中
  5. session.save(user);
添加数据 insert Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

(2)修改一条数据,需要先查找到该对象,然后才能修改对象中的属性

使用 update 方法
    
    
  1. // 先执行查的方法,找到需要修改的对象
  2. User user =(User) session.get(User.class,1);
  3. user.setUsername("耿帅佳--修改");
  4. session.update(user);
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。


(3)删除一条数据,调用 delete 方法。 需要先找出该对象, 才能执行删除。

   
   
  1. // 先找出该对象
  2. User user =(User) session.get(User.class,2);
  3. // 再删除
  4. session.delete(user);

Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

(5) 查询一条记录,查询 id 为 2 的记录。

(5.1)get 方法两个参数  (Class class Serializable  id)  , 第二个参数就是标识的主键  
   
   
  1. // 查询 id 为 2的这一条记录。
  2. User user =(User) session.get(User.class,2);
  3. transaction.commit();
 Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

(5.1)使用 load 方法来查数据库, 它不会立即查询数据库,当我们使用到这个对象的时候,就会查询数据库。
   
   
  1. User user =(User) session.load(User.class,2);
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
在debug 的模式下,我们执行到提交以后,再去点击 user 对象,则会执行如下图的查找。
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
比较:get()方法  和 load() 方法 get: get方法被调用时立刻  发送sql语句查询load : 调用时并没有查询数据库,当我们需要使用该对象的时候,才查询数据

(6)查询所有,三种方式。

(6.1)使用HQL 语言进行查询Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
 (6.2)使用原生的sql 语句查询Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
(6.3) 使用Hibernate 独创的对象方式查询 => 无语句
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
对应控制台的输出:
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
其中的问题: 1 load方法.返回一个代理对象,获得其内容时,会查询数据库,是每次访问属性都会查询数据库吗? 答:不是每次都查.代理对象中有一个标识是否被初始化的boolean型变量. 记录是否被初始化过. 2 代理都是要基于接口的,用load方法返回的代理,就没有实现任何接口? 答: java中的动态代理是基于接口.  而 Hibernate 是使用javassist-3.12.0.GA.jar 产生代理对象的. 该代理与被代理对象之间的关系是继承关系.与我们学的动态代理不是一种.所以不需要接口.

【5】 详解 Trancastion 对象。

事务是处理一系列的数据库的操作。 Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
注意: 事务关闭时,就会把当前线程上绑定的session 关闭,并删除 Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

【6】 详解Query 对象

(1)可以使用这个对象,实现分页显示的功能。Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

(2)查询一条结果。注意: 返回的结果只能是 一条,否则会报错。Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
当返回多条数据的时候。
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

【7】详解 Criteria  对象

criteria 是Hibernate 提供的面向对象查询方式,无语言。

(1) 查询所有

Cretiaria对象 与 Query对象功能很像 Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

(2)查询username 属性值为 jack 的记录。(比较是否相等)

 Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。 username 为javabean 中的一个属性,对应数据库的 username Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

(3)查询username 属性中有  a 这个字母的(Like)

Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

总结:其它类似作用的方法调用

   criteria.add(Restrictions.eq("username""tom"));

         Restrictions.gt(propertyName, value) 大于

         Restrictions.ge(propertyName, value) 大于等于

         Restrictions.lt(propertyName, value) 小于

         Restrictions.le(propertyName, value) 小于等于

           Restrictions.like(propertyName, value) 模糊查询,注意:模糊查询值需要使用 % _


这些方法的命名,很像在学习数据库的时候,中间使用的查询条件。


【8】生成一个 HibernateUtils  的类。

   
   
  1. package cn.edu.aynu.rjxy.utils;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import org.hibernate.cfg.Configuration;
  5. publicclassHibernateUtils{
  6. privatestaticSessionFactory sessionFactory;
  7. static{
  8. // 1加载配置
  9. Configuration configuration =newConfiguration().configure();
  10. // 2获取seesionFactory
  11. sessionFactory = configuration.buildSessionFactory();
  12. Runtime.getRuntime().addShutdownHook(newThread(newRunnable(){
  13. @Override
  14. publicvoid run(){
  15. System.out.println("虚拟机关闭!释放资源");
  16. sessionFactory.close();
  17. }
  18. }));
  19. }
  20. /**
  21. * @return
  22. */
  23. publicstaticSession openSession(){
  24. return sessionFactory.openSession();
  25. }
  26. /**
  27. * @return
  28. */
  29. publicstaticSession getCurrentSession(){
  30. return sessionFactory.getCurrentSession();
  31. }
  32. }


三,核心配置文件详解(hibernate.cfg.xml)  (多读)

Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
 代码:
   
   
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-configuration PUBLIC
  3. "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
  5. <hibernate-configuration>
  6. <session-factory>
  7. <!--连接数据库的基本四项-->
  8. <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  9. <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/day29hibernate_test01</property>
  10. <property name="hibernate.connection.username">root</property>
  11. <property name="hibernate.connection.password">111</property>
  12. <!-- show_sql:操作数据库时,会向控制台打印sql语句-->
  13. <property name="show_sql">true</property>
  14. <!-- format_sql:打印sql语句前,会将sql语句先格式化-->
  15. <property name="format_sql">true</property>
  16. <!-- hbm2ddl.auto:生成表结构的策略配置 update(最常用的取值):如果当前数据库中不存在表结构,那么自动创建表结构.
  17. 如果存在表结构,并且表结构与实体一致,那么不做修改如果存在表结构,并且表结构与实体不一致,那么会修改表结构.会保留原有列. create(很少):无论是否存在表结构.每次启动Hibernate都会重新创建表结构.(数据会丢失)
  18. create-drop(极少):无论是否存在表结构.每次启动Hibernate都会重新创建表结构.每次Hibernate运行结束时,删除表结构.
  19. validate(很少):不会自动创建表结构.也不会自动维护表结构.Hibernate只校验表结构.如果表结构不一致将会抛出异常.-->
  20. <property name="hbm2ddl.auto">update</property>
  21. <!--数据库方言配置 org.hibernate.dialect.MySQLDialect(选择最短的)-->
  22. <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  23. <!-- hibernate.connection.autocommit:事务自动提交-->
  24. <property name="hibernate.connection.autocommit">true</property>
  25. <!--Session与线程绑定=>只有配置了该配置,才能使用getCurrentSession -->
  26. <property name="hibernate.current_session_context_class">thread</property>
  27. <!--引入ORM 映射文件填写src之后的路径-->
  28. <!--添加映射文件-->
  29. <mapping resource="cn/edu/aynu/rjxy/domain/User.hbm.xml"/>
  30. </session-factory>
  31. </hibernate-configuration>

四,映射配置文件(PO.hbm.xml)

【1】对PO (持久化类)的要求 :

             (1)提供一个无参的 public 的构造方法
             (2)提供一个标识属性,既在数据库中当作主键              (3)提供public 的get  和 set 方法
             (4)使用包装类型来标识属性
             (5)不要对实体使用 final ,否则无法生成代理对象
Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

1.1    持久化对象的唯一标识 OID

lJava按地址区分同一个类的不同对象.

l关系数据库用主键区分同一条记录

lHibernate使用OID来建立内存中的对象和数据库中记录的对应关系

结论对象的OID和数据库的表的主键对应。为保证OID的唯一性,应该让Hibernate来为OID付值

1.2    区分自然主键和代理主键

l  主键需要具备不为空/不能重复/不能改变

           自然主键: 在业务中,某个属性符合主键的三个要求.那么该属性可以作为主键列.

           代理主键在业务中,不存符合以上3个条件的属性,那么就增加一个没有意义的列.作为主键.

Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。

1.3    基本数据与包装类型

l基本数据类型和包装类型对应hibernate的映射类型相同

l基本类型无法表达null、数字类型的默认值为0

l包装类默认值是null。当对于默认值有业务意义的时候需要使用包装类。


 我们在设置参数的数据类型参照这个表,设置。

Java数据类型

Hibernate数据类型

标准SQL数据类型
(PS:对于不同的DB可能有所差异)

bytejava.lang.Byte

byte

TINYINT

shortjava.lang.Short

short

SMALLINT

intjava.lang.Integer

integer

INGEGER

longjava.lang.Long

long

BIGINT

floatjava.lang.Float

float

FLOAT

doublejava.lang.Double

double

DOUBLE

java.math.BigDecimal

big_decimal

NUMERIC

charjava.lang.Character

character

CHAR(1)

booleanjava.lang.Boolean

boolean

BIT

java.lang.String

string

VARCHAR

booleanjava.lang.Boolean

yes_no

CHAR(1)('Y''N')

booleanjava.lang.Boolean

true_false

CHAR(1)('Y''N')

java.util.Datejava.sql.Date

date

DATE

java.util.Datejava.sql.Time

time

TIME

java.util.Datejava.sql.Timestamp

timestamp

TIMESTAMP

java.util.Calendar

calendar

TIMESTAMP

java.util.Calendar

calendar_date

DATE

byte[]

binary

VARBINARYBLOB

java.lang.String

text

CLOB

java.io.Serializable

serializable

VARBINARYBLOB

java.sql.Clob

clob

CLOB

java.sql.Blob

blob

BLOB

java.lang.Class

class

VARCHAR

java.util.Locale

locale

VARCHAR

java.util.TimeZone

timezone

VARCHAR

java.util.Currency

currency

VARCHAR

 【2】映射文件配置详解(记住)

Hibernate 初相识(一)Hibernate API 详解,配置文件,映射文件详解。
代码:
   
   
  1. <?xml version="1.0" encoding="UTF-8"?>
  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. <!-- ORM元数据表对象关系映射文件
  6. package:配置该配置文件中类所在的包.-->
  7. <hibernate-mapping package="com.itheima.a_hello">
  8. <!--class:配置实体与表的关系
  9. name :填写实体的完整类名
  10. table:与实体对应表的名称
  11. dynamic-insert:动态插入默认值是false
  12. true=>如果字段值为null,不参与insert语句
  13. dynamic-update:动态更新默认值"false"
  14. true=>没改动过的属性,将不会生成到update语句中
  15. -->
  16. <class name="User" table="t_user">
  17. <!-- id:配置实体与表中 id对应
  18. name: user对象中标识主键的属性名称
  19. column:主键在表中的列名
  20. length:列的数据长度
  21. unsaved-value(不常用):指定主键为什么值时,当做null来处理.
  22. access(强烈推荐不要用):field 那么在操作属性时,会直接操作对应的字段而不是get/set方法
  23. -->
  24. <id name="id" column="id" length="255">
  25. <!-- generator:主键生成策略
  26. 1.increment数据库自己生成主键.先从数据库中查询最大的ID值,将ID值加1作为新的主键
  27. 2.identity依赖于数据的主键自增功能
  28. 3.sequence序列,依赖于数据中的序列功能(Oracle).
  29. 4.hilo(纯了解,永远用不到):Hibernate自己实现序列的算法,自己生成主键.(hilo算法)
  30. 5.native自动根据数据库判断,三选一. identity|sequence|hilo
  31. 6.uuid生成32位的不重复随机字符串当做主键
  32. 7.assigned自己指定主键值.表的主键是自然主键时使用.
  33. -->
  34. <generator class="uuid"></generator>
  35. </id>
  36. <!-- property :实体中属性与表中列的对应
  37. name :实体中属性名称
  38. column :表中列的名称
  39. length :数据长度
  40. precision:小数点后的精度
  41. scale:有效位数
  42. insert(一般不用):该属性是否加入insert语句.
  43. update(一般不用):该属性是否加入update语句.
  44. not-null:指定属性的约束是否使用非空
  45. unique :指定属性的约束是否使用唯一
  46. -->
  47. <!--
  48. type:表达该属性的类型
  49. 可以用三种方式指定属性
  50. java类型数据库类型指定Hibernate类型指定
  51. java.lang.Stringvarcharstring
  52. -->
  53. <property name="name" column="name" update="true" type="string"></property>
  54. <property name="password" column="password"></property>
  55. <property name="sal" column="sal" precision="2" scale="3"></property>
  56. </class>
  57. </hibernate-mapping>