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