<script type="text/javascript">document.domain = "csdn.net";</script>
hibernate基本映射
实体类---表
实体类中的普通属性---表字段
采用<class>标签映射成数据库表,通过<property>标签将普通属性映射成表字段
所谓普通属性指不包括自定义类、集合和数组 等
注意:如果实体类和实体类中的属性和sql中的关键字重复,必须采用table或column重新命名
实体类的设计原则:
* 实现一个默认的(即无参数的)构造方法(constructor)
* 提供一个标识属性(identifier property)(可选)
* 使用非final的类 (可选)
* 为持久化字段声明访问器(accessors)
主键生成策略:
uuid、native和assigned
hql: 查的是对象不是表。
id属性:name,type,long,这个long是用来限制长度的。比如从 对象的String到数据库的varcher默认为255,现在可以设为long=32
如果有两个机器配置了hibernate,那么主键生成策略中不宜用increment ,因为不适合集群环境 ,会有重复。比如你的机器有一个1,我的机器也会有一个1,那就重复了。
uuid:uuid的算法,hibernate生成的32位字符串
identity:适于mysql,sql server的自增生成方式生成主键
sequence:适于oracle
native:可以根据后台数据库的变化而变化。
如果主键是String ,那只能用uuid.
如果你的类叫group,那么不定义cloum时,数据库表的名字也叫group,是不行的。必须重定义,因为group是关键字
即注意:如果实体类和实体类中的属性和sql中的关键字重复,必须采用table或column重新命名
采用cascade属性是解决TransientObjectException异常的一种手段
级联只对增加、删除、修改有关系,对查询没有影响