hibernate一对一双向映射
用户信息
@Entity public class User { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; private String name; @OneToOne(cascade=CascadeType.ALL) private IDCard idCard; ...... }
身份证
@Entity public class IDCard { @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; private String num; @OneToOne(cascade=CascadeType.ALL) private User user; ..... }
Session session = new Session(); session.open(); User user = new User(); user.setName("wangtao"); IDCard card = new IDCard(); card.setNum("10983489459458"); card.setUser(user); user.setIdCard(card); session.beginTransaction(); session.persist(user); session.commit(); session.close();
<persistence-unit name="hib_hsql" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" /> <property name="hibernate.connection.driver_class" value="org.hsqldb.jdbcDriver" /> <property name="hibernate.connection.url" value="jdbc:hsqldb:hsql://localhost/xdb" /> <property name="hibernate.connection.username" value="sa" /> <property name="hibernate.connection.password" value="" /> <property name="hibernate.hbm2ddl.auto" value="update"/> <property name="hibernate.show_sql" value="true"/> <property name="hibernate.format_sql" value="false"/> </properties> </persistence-unit>
注意:
如果配置了 hibernate.hbm2ddl.auto ,
则在创建EntityManagerFactory的时候会自动创建被Entity映射的实体的数据表
反之,如果不配置,则不会自动创建。
但是在进行数据库操作的过程中会遇到异常