hibernate

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中的名字。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值