Hibernate 的helloworld

IDEA 2019.2

jdk8

一、项目结构

 

 二、创建实体类

1.正常一对一

例如:company

package com.dxj.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Set;
/**
 * @author summer
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Company {
    private Integer id;
    private String name;
    private Set emps;
}

2.一对多

package com.dxj.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.util.Set;

/**
 * @author summer
 */
@Entity
@Table(name = "author_tab")
@SequenceGenerator(name = "as",sequenceName = "author_seq",allocationSize = 1)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Author {
    @Id
    @GeneratedValue(generator = "as",strategy = GenerationType.SEQUENCE)
    @Column(name = "aut_id")
    private  Integer id;
    @Column(name = "aut_name")
    private String name;

    /**
     * 一对多
     */
    @OneToMany(mappedBy = "author")
    @Column(name = "book_author")
    private Set<Book> books;
}

3.多对一

package com.dxj.entity;
import lombok.*;
import javax.persistence.*;
/**
 *@SequenceGenerator oracle数据库独有
 * @author summer
 */
@Entity
@Table(name = "book_tab")
@SequenceGenerator(name = "bs",sequenceName = "book_seq",allocationSize = 1)
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class Book {
    /**
     * 设置主键id
     */
    @Id
    @GeneratedValue(generator = "bs",strategy = GenerationType.SEQUENCE)
    /**
     * Column 和数据库字段一一对应
     */
    @Column(name = "book_id")
    private Integer id;
    @Column(name = "book_name")
    private String name;

    /**
     * 多对一
     */
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "book_author")
    private  Author author;

    @Override
    public String toString() {
        return "Book{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

三、配置文件

1.若不用注解,则用Emp.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.dxj.entity">
    <!--company映射-->
    <class name="Company" table="company_tab">
        <id name="id">
            <column name="com_id"/>
            <generator class="sequence">
                <param name="sequence_name">COMPANY_SEQ</param>
            </generator>
        </id>
        <property name="name" column="com_name"/>
        <!--一对多-->
        <set name="emps" cascade="all" inverse="true">
            <key column="emp_company"/>
            <one-to-many class="Emp"/>
        </set>
    </class>
    <!--emp映射-->
    <class name="Emp" table="EMP_TAB" >
        <id name="id">
            <column name="emp_id" />
<!--            <generator class="native"/>-->
            <generator class="sequence">
                <param name="sequence_name">EMP_SEQ</param>
            </generator>
        </id>
        <property name="name" column="emp_name" />
        <property name="gender" column="emp_gender" />
        <property name="sal"  column="emp_sal" />
        <!--多对一-->
        <many-to-one name="company" column="emp_company" class="Company" cascade="all"/>
    </class>
</hibernate-mapping>

2.hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!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.connection.url">jdbc:oracle:thin:@team8:1521:xe</property>
  <property name="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</property>
  <property name="hibernate.connection.username">dxj</property>
  <property name="hibernate.connection.password">123</property>
  <!-- 数据方言 -->
<!--  <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>-->
  <!-- 数据源C3P0 -->
<!--  <property name="hibernate.c3p0.min_size">5</property>-->
<!--  <property name="hibernate.c3p0.max_size">20</property>-->
<!--  <property name="hibernate.c3p0.timeout">50000</property>-->
  <!-- SQL辅助 -->
  <property name="hibernate.show_sql">true</property><!--打印sql语句-->
  <property name="hibernate.format_sql">true</property><!--sql语句美化-->
  <!-- 表格的自动管理 -->
  <property name="hibernate.hbm2ddl.auto">update</property>

<!--  <mapping resource="mapper/Emp.hbm.xml"/>-->
  <mapping class="com.dxj.entity.Book"/>
  <mapping class="com.dxj.entity.Author"/>

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

四、依赖 POM

 

posted @ 2020-03-11 13:32  Jaine  阅读(164)  评论(0)    收藏  举报