property节点中的属性

1. unique, update, index

unique: 设置是否为该属性所映射的数据列添加唯一约束.

update: 设置为false, 表示这个字段的值不能被修改

index: 指定一个字符串的索引名称. 当系统需要 Hibernate 自动建表时, 用于为该属性所映射的数据列创建索引, 从而加快该数据列的查询.

length: 指定该属性所映射数据列的字段的长度

2. formula

  设置一个 SQL 表达式, Hibernate 将根据它来计算出派生属性的值. 派生属性: 并不是持久化类的所有属性都直接和表的字段匹配, 持久化类的有些属性的值必须在运行时通过计算才能得出来, 这种属性称为派生属性 使用 formula 属性时 formula=“(sql)” 的英文括号不能少 Sql 表达式中的列名和表名都应该和数据库对应, 而不是和持久化对象的属性对应 如果需要在 formula 属性中使用参数, 这直接使用 where cur.id=id 形式, 其中 id 就是参数, 和当前持久化对象的 id 属性对应的列的 id 值将作为参数传入.

测试:

在News.java中添加属性, +getter/setter: 

// 派生属性
private String desc;

在News.hbm.xml中配置属性:

<!-- 派生属性配置 -->

<property name="desc" type="java.lang.String"
formula="(SELECT CONCAT(authod, ':', title) FROM NEWS n WHERE n.id=id)">

@Test
public void test() throws InterruptedException {
News news = (News) session.get(News.class, 1);
System.out.println(news.getDesc());
}

测试:

----------------------------------------

Java 时间和日期类型的 Hibernate 映射

  在 Java 中, 代表时间和日期的类型包括: java.util.Date 和 java.util.Calendar. 此外, 在 JDBC API 中还提供了 3 个扩展了 java.util.Date 类的子类: java.sql.Date, java.sql.Time 和 java.sql.Timestamp, 这三个类分别和标准 SQL 类型中的 DATE, TIME 和 TIMESTAMP 类型对应 在标准 SQL 中, DATE 类型表示日期, TIME 类型表示时间, TIMESTAMP 类型表示时间戳, 同时包含日期和时间信息.

 

Java 大对象类型的 Hiberante 映射

   在 Java 中, java.lang.String 可用于表示长字符串(长度超过 255), 字节数组 byte[] 可用于存放图片或文件的二进制数据. 此外, 在 JDBC API 中还提供了 java.sql.Clob 和 java.sql.Blob 类型, 它们分别和标准 SQL 中的 CLOB 和 BLOB 类型对应. CLOB 表示字符串大对象(Character Large Object), BLOB表示二进制对象(Binary Large Object)

  Mysql 不支持标准 SQL 的 CLOB 类型, 在 Mysql 中, 用 TEXT, MEDIUMTEXT 及 LONGTEXT 类型来表示长度操作 255 的长文本数据 在持久化类中, 二进制大对象可以声明为 byte[] 或 java.sql.Blob 类型; 字符串可以声明为 java.lang.String 或 java.sql.Clob 实际上在 Java 应用程序中处理长度超过 255 的字符串, 使用 java.lang.String 比 java.sql.Clob 更方便

 

 

posted @ 2017-03-14 19:19  半生戎马,共话桑麻、  阅读(253)  评论(0)    收藏  举报
levels of contents