Hibernate学习

73 篇文章 1 订阅
50 篇文章 0 订阅

Hibernate学习

单主键、没有外键的Hibernate配置实例

<hibernate-mapping>

<class name="com.pms.bean.base.BadCodeBean" table="tbNC">

<id name="badCode" column="NC_ID">

<generator class="assigned"/>

</id>

<property name="desc" type="string"column="NC_DESC"></property>

</class>

</hibernate-mapping>

单主键、有外键的Hibernate配置实例

<hibernate-mapping>

<class name="com.pms.bean.base.ProjectBean" table="tbProject">

<id name="prjname" column="PRJ_NAME" type="string">

<generator class="assigned"></generator>

</id>

<many-to-one name=”customerCode”

class=”com.pms.bean.base.CustomerBean” outer-join=”ture”

not-null=”true” lazy=”false”>

<column name=”PRJ_CU_CODE”></column>

</many-to-one>

</hibernate-mapping>

双主键、没有外键的Hibernate配置实例

<hibernate-mapping>

<class name="com.pms.bean.base.LocationBean" table="tbLocation">

<composite-id>

<key-property name="lgort" column="LO_LGORT" type="string">

<key-property name="werks" column="LO_WERKS" type="string">

</composite-id>

</class>

</hibernate-mapping>

双主键、有外键的Hibernate配置实例

<hibernate-mapping>

<class name="com.pms.bean.base.DepartNcBean" table="tbNCDept">

<composite-id>

<key-property name="ncBean" column="NCD_ID " lazy="false">

<key-property name="deptDialogBean" column="NCD_DeptID "

lazy="false">

</composite-id>

<many-to-one name=”badType” class=”com.pms.bean.base.BadTypeBean”

outer-join=”ture”

not-null=”true” lazy=”false”>

<column name=”NCD_BadTypeCode”></column>

</many-to-one>

</class>

</hibernate-mapping>

双主键中的两个主键都被作为外键被调用的Hibernate配置实例

详细举例讲解:例如工厂和生产调度员组合成双主键,现在有一个表里面有两个外键分

别是工厂和生产调度员。

<hibernate-mapping>

<class name="com.pms.bean.base.prd.MaterielBean" table="tbMateriel">

<id name="matnr" column="MA_MATNR" type="string" length="18">

<generator class="assigned"/>

</id>

<property name="color" column="MA_COLOR" length="50"/>

<property name="werks" type="string" column="MA_WERKS" length="4"

insert="false" update="false"/>

<many-to-one name="dispatcherBean"

class="com.pms.bean.base.prd.DispatcherBean"

outer-join="true" not-null="true" lazy="false">

<column name="MA_FEVOR"/>

<column name="MA_WERKS "/>

</many-to-one>

</class>

</hibernate-mapping>

hibernate里面设置id自动增加避免并发后果

PLSql增加如下代码:

create sequence SEQ_tbSChecking start with 100000 increment by 1

minvalue 1 nomaxvalue nocache nocycle noorder;

(hibernate)xml文件中更改为:

<id name="id" column="SC_ID" type="java.lang.Integer" >

<generator class="sequence">

<param name="sequence">SEQ_tbSChecking</param>

</generator>

</id>

@注解和XML 主键生成策略

@注解配置:

@Id //表示该列为主键

@GeneratedValue(strategy=GenerationType.AUTO) //主键类型,auto为自动增长

private Integer id;

1、GenerationType.AUTO 自动增长,根据底层数据库自动选择。

数据库支持自动增长类型,则为自动增长。

2、GenerationType.TABLE 使用指定的表来决定主键的取值,结合@TableGeneraors 使用。

@Id //表示该列为主键

@TableGeneraors(name="tb_cat_gen",allocationSize=1)

@GeneratedValue(strategy=GenerationType.AUTO) //主键类型,auto为自动增长

private Integer id;

3、GenerationType.SEQYEBCE 使用Sequence 来决定主键的取值,适合Oracle、DB2 等支

持Sequence 的数据库,一般结合@SequenceGenerator。

@Id //表示该列为主键

@SequenceGenerator(name="tb_cat_gen",allocationSize=1)

@GeneratedValue(strategy=GenerationType.AUTO) //主键类型,auto为自动增长

private Integer id;

注意:oracle 没有自动增长类型,只能使用Sequence

4、GenerationType.IDENTITY 支持DB2、mySQL、MS SQL Server、Sybase 与

HyperaonicSQL 数据库的identit 类型主键。

XML 配置:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值