一级缓存
二级缓存说明
一的一方:学生类
@Id
@GeneratedValue
private int id;
private String name;
private int age;
@Transient//表示属性不会被ORM映射到数据库中
private double salary;
@ManyToOne(cascade=CascadeType.ALL)//用1的一方维护关联关系
@JoinColumn(name="cid")
private ClassRoom classRoom;
多的一方:教室
@Id
private String id;
private String cname;
学生类
@Entity(name="t_student")
public class Student {
@Id
@GeneratedValue
private int id;
private String name;
private int age;
@Transient//表示属性不会被ORM映射到数据库中
private double salary;
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(
name="t_stu_teacher",
joinColumns={@JoinColumn(name="sid")},
inverseJoinColumns={@JoinColumn(name="tid")}
)
private Set<Teacher> teacher;
}
老师类
@Entity
public class Teacher {
@Id
@GeneratedValue
private int id;
private String name;
@ManyToMany(mappedBy="teacher")
private Set<Student> stu;
}
使用hibernate以及spring链接Oracle数据库的Application.xml的配置:
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="youruser"></property>
<property name="password" value="yourpassword"></property>
<property name="driverClass" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="jdbcUrl" value="jdbc:oracle:thin:@192.168.0.1:1521:instance"></property>
<!-- <property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/> -->
<property name="initialPoolSize" value="5"></property>
<property name="maxPoolSize" value="10"></property>
</bean>
<!-- 配置sessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<!-- <property name="configLocation" value="classpath:hibernate.cfg.xml"></property> -->
<!-- 查找哪个包中的实体类 -->
<property name="packagesToScan" >
<value>com.lyf.entity</value>
</property>
<!-- 注入数据源 -->
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<!-- <value> hibernate.dialect=org.hibernate.dialect.HSQLDialect </value> -->
<props>
<!--数据库方言-->
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
<prop key="hibernate.format_sql">false</prop>
</props>
</property>
</bean>
加入的驱动包:ojdbc6.jar.
学生类:
@Id
@GeneratedValue
private int id;
private String name;
private int age;
@Transient//表示属性不会被ORM映射到数据库中
private double salary;
@OneToOne(cascade=CascadeType.ALL)//级联操作,包含所有
@JoinColumn(name="pid")
private IdCard card;
使用hibernate.cfg.xml配置时,启动Junit初始化表时,报错:
org.hibernate.HibernateException: The dialect was not set. Set the property
这是由于没配置mapping引起的。