hibernate配置
<hibernate-configuration> <!-- 用来描述数据库的链接 --> <session-factory> <!-- 驱动 --> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <!-- url --> <property name="connection.url"> jdbc:mysql://localhost:3306/hibernate0909 </property> <!-- username --> <property name="connection.username">root</property> <!-- password --> <property name="connection.password">123456</property> <!-- hibernate针对建表的操作 update:如果有表,检查表的结构,如果没有则创建 create人-drop 启动hibernate创建表,结束hibernate删除表 create 每次启动都重新创建表 validate 每次启动都检查表的结构 --> <property name="hbm2ddl.auto">update</property> <!-- 在控制台显示sql语句 --> <property name="show_sql">true</property> <mapping resource="cn/itcast/hibernate0909/idgenerator/increment/Person.hbm.xml" /> </session-factory> </hibernate-configuration>
设置主键:
<class name="cn.itcast.hibernate0909.idgenerator.identity.Person" table="person"> <id name="pid" type="java.lang.Long" length="5"> <column name="pid"></column> <!-- 主鍵产生器 --> <generator class="identity"></generator> </id> <property name="pname" type="java.lang.String" length="20"></property> <property name="psex" type="java.lang.String" length="5"></property> </class>
主键产生器 class="increment" (主键类型为java.lang.Long length="5")
Hibernate: select max(pid) from person
Hibernate: insert into person (pname, psex, pid) values (?, ?, ?)
increment
hibernate 内部回去查询该表中的主键的最大值
主键产生器 class="identity"(主键类型为java.lang.Long length="5"),这时需要手动设置数据库的id为自增长
Hibernate: insert into person (pname, psex) values (?, ?)
因为没有发出select max语句,所以identity得效率比increment要高
缺点:主键不连贯
主键产生器 class="assigned"(主键类型为java.lang.Long length="5")
在映射文件中,该对象的主键生成机制是assigned,在程序中需要赋值
主键产生器 class="uuid"(主键类型为java.lang.String)javabean中设置id为String
主键的生成机制
*increment
效率比较低的,但是主键的值是连续的
*indentity
根据底层的数据库的自增生成,效率比较高,但是主键的值不连续
*assigned
手动赋值
*uuid
*sequence(oracle)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。