Hibernate注解开发--一对多注解开发

Hibernate注解开发–一对多注解开发

这里用的是javax.persistence包下的注解,上代码。与普通方式不同的是不需要映射文件,还是以客户(Customer)与订单(Order)为例。但是还需要配置核心配置文件

hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.hbm2ddl.auto">update</property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql:///hibernatetest?useUnicode=true&amp;characterEncoding=UTF-8</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">root</property>

        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
		
		<!-- 配置实体类 -->
        <mapping class="com.wang.domain.Customer" />
        <mapping class="com.wang.domain.Orders" />

        <!--<mapping resource="com/wang/domain/Customer.hbm.xml" />-->
        <!--<mapping resource="com/wang/domain/Orders.hbm.xml" />-->

    </session-factory>
</hibernate-configuration>

实体类创建

订单类

    @Entity
    @Table(name = "t_order")
    public class Orders {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer oid;
        private Double price;
        private String adress;
    
        @ManyToOne(targetEntity = Customer.class)
        @Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
        @JoinColumn(name = "c_id")
        private Customer customer;
		
		// 以下省略get与set方法
}

客户类

@Entity
@Table(name = "c_customer")
public class Customer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer cid;
    
    @Column(name = "c_name")
    private String name;
    
    @OneToMany(mappedBy = "customer",targetEntity = Orders.class) 
    @Cascade(org.hibernate.annotations.CascadeType.SAVE_UPDATE)
    private Set<Orders> orders = new HashSet<Orders>();
}
测试类
    @Test
    public void test1(){
        Configuration cf = new Configuration().configure();
        SessionFactory sf = cf.buildSessionFactory();
        Session session = sf.openSession();
        Transaction tsc = session.beginTransaction();
        Customer c1 = new Customer();
        c1.setName("Jar");

        Orders o1 = new Orders();
        o1.setPrice(100d);
        o1.setAdress("huqi1");
        o1.setCustomer(c1);

        Orders o2 = new Orders();
        o2.setPrice(200d);
        o2.setAdress("huqi2");
        o2.setCustomer(c1);

		//因为在客户类中设置了由订单方来维护外键,所以保存到数据库的时候要保存所有订单,同时要设置级联
        session.save(o1);
        session.save(o2);

        tsc.commit();
        session.close();
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值