------------------注解-------------------
@Entity //声明一个实体
@Table(name="表名") //与表映射
@Id //指定主键
@Column //指定表里对应的列
-----------多对多注解方式编程步骤 -----------
一、首先需要建立三张表,两个JavaBean类个对应的一张表以及一张中间表
建表注意事项:
1、对应javabean的两张表一定需要各有一个主键,这两个主键分别对应中间表里的两个外键,这样才能建立关联
2、建表sql语句示例如下:
create table student2(
id number primary key not null,
name varchar(30)
);
create table course(
id number primary key not null,
name varchar2(30)
);
create table student2_course(
s_id number references student2(id),
c_id number references course(id)
);
二、注解的使用
(放在类前面的注解)
1、@Entity //放在JavaBean类的前面,用来声明这是一个实体
2、@Table(name="表名") //放在@Entity之后,用来声明该实体类对应的表
3、
@GenericGenerator
(name =
"genID"
, strategy =
"increment"
) //声明主键的生成方式
(放在方法名前面的注解)
4、@Id //声明主键,也可以放在get方法之前
5、@Column //声明该变量对应表中的列
6、@GeneratedValue(generator="genID") //和GenericGenerator对应使用 里面的generator属性的值与GenericGenerator里面的name对应的值相同
7、@ManytoMany //声明多对多关系
8、
@JoinTable(
name=
"student2_course",
joinColumns={
@JoinColumn(name=
"c_id")},
inverseJoinColumns={
@JoinColumn(name=
"s_id")} ) //name:对应的中间表
//jonColumns:里面的参数是个数组,因此用{ } 里面是@JoinColumn(name="")声明与这个javaBean主键相关联的表中外键
//inverseJoinColumns:同理,声明另与一个javabean对用的表格中的外键
具体的代码示例 如下:
//类coursu总的
@Entity
@Table(name="course")
@GenericGenerator(name = "genID", strategy = "increment")
public class Course {
@Id
@GeneratedValue(generator="genID")
@Column(name="id")
private Long id;
@Column(name="name")
private String name;
@ManyToMany
@JoinTable(name="student2_course",
joinColumns={@JoinColumn(name="c_id")},
inverseJoinColumns={@JoinColumn(name="s_id")} )
private Set<Student2> students = new HashSet<Student2>();
三、配置文件hibernate.cfg.xml
需要在配置文件中添加映射类
<mapping class="对应类的路径"/>
<mapping class="com.ldl.domain1.GoodBean"/>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<!-- 1、加载数据库驱动,获取数据库连接 -->
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</property>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.username">scott</property>
<property name="hibernate.connection.password">tiger</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property><!-- 169.254.146.196 -->
<!-- 显示SQL,默认为false -->
<property name="hibernate.show_sql">true</property>
<!--添加映射类 -->
<mapping class="com.ldl.domain1.GoodBean"/>
<mapping class="com.ldl.domain2.Course"/>
<mapping class="com.ldl.domain2.Student2"/>
</session-factory>
</hibernate-configuration>