hibernate
多对一:
<many-to-one>
1对多
<set>
多对多:
两个set
session.load和session.get的区别;
load方法没有找到数据后会抛出一个ObjectNotFoundException的异常
而get方法会返回一个null;
load方法支持延迟加载,而get方法会在一级缓存,二级缓存中找。数据库中查找。
package com.dairui.Service;
import java.sql.Timestamp;
import java.util.Date;
import javax.xml.soap.Text;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Order;
import com.dairui.Pojo.Orders;
import com.dairui.Pojo.User;
public class HibernateTest {
private static Configuration configuration = null;
private static SessionFactory factory = null;
static {
configuration = new Configuration().configure("hibernate.cfg.xml");
configuration.addClass(User.class);
configuration.addClass(Orders.class);
factory = configuration.buildSessionFactory();
}
//
// public void addUser() {
// Session session = factory.openSession();
// Transaction transaction = session.beginTransaction();
// users.setUsername("miss wang");
// users.setPassword("123");
// session.save(users);
// session.evict(users);
// transaction.commit();
//
// }
public void insert() {
Session session = factory.openSession();
Transaction transaction = session.beginTransaction();
User user = new User();
user.setUsername("dairuissss");
Orders orderss = new Orders();
orderss.setCreatetime(new Date(2018, 11, 21, 12, 0, 1));
orderss.setNote("this is test");
orderss.setUser(user);
session.save(user);
orderss.setUser_id(user.getId());
session.save(orderss);
transaction.commit();
session.close();
}
public static void main(String[] args) {
HibernateTest hibernateTest = new HibernateTest();
hibernateTest.insert();
}
}
Order.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="com.dairui.Pojo.User" table="user">
<id name="id" column="id" type="integer">
<generator class="increment"></generator>
</id>
<property name="username" column="username"></property>
<property name="birthday" column="birthday"></property>
<property name="sex" column="sex"></property>
<property name="address" column="address"></property>
</class>
</hibernate-mapping>
User.hbm.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping>
<class name="com.dairui.Pojo.Orders" table="orders">
<id name="id" column="id" type="integer">
<generator class="increment"></generator>
</id>
<property name="createtime" type="java.util.Date">
<column name="DATE"></column>
</property>
<property name="note" column="password"></property>
<property name="number" column="number"></property>
<many-to-one name="user" column="user_id"
class="com.dairui.Pojo.User" not-null="true" cascade="save-update">
</many-to-one>
</class>
</hibernate-mapping>
hibernate.cfg.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="Firsthibernate">
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.password">dairui123</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/mybatis</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.show_sql">true</property>
</session-factory>
</hibernate-configuration>
出现XXXX is not mapped是因为hql中的查询语句表名没有对应hbm.xml中的名字。