hibernate的直接加载xml的方式

原创 2015年11月20日 12:41:28

  HIbernate所使用到的包有:


  private static SessionFactory sessionfactory = new Configuration()

            .configure().addClass(User.class).
            buildSessionFactory();
    public static void testSave(User user){
        Session session=sessionfactory.openSession();
        session.beginTransaction();
    
        session.save(user); 
        session.getTransaction().commit();
        session.close();

   

@Test
    public void testTestSave() {
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        // --------------------------------------------

        // 构建对象
        User user = new User();
        user.setName("张天");
        // >> Set集合
        user.setAddress(new TreeSet<String>()); // 当设置了sort属性时,就要使用SortedSet类型
        user.getAddress().add("2御富科贸园");
        user.getAddress().add("1棠东东路");
        // 保存
        session.save(user);

        // --------------------------------------------
        session.getTransaction().commit();
        session.close();
    }

public static void testGet(){
    Session session=sessionF.openSession();
    Transaction tx=session.beginTransaction();
    //第二个参数为id号
    User user=(User) session.get(User.class, 2);
    
    System.out.println(user);
    tx.commit();
    session.close();
}

在同一个包下面的user类:

public class User {
private int id;
private String name;
private Set<String> addressSet;
public int getId() {
    return id;
}
public void setId(Integer id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public Set<String> getAddressSet() {
    return addressSet;
}
public void setAddressSet(Set<String> adresss) {
    this.addressSet = adresss;
}
@Override
public String toString() {
    return "User [addresss=" + addressSet + ", id=" + id + ", name=" + name + "]";
}

}

在同一个包下面的user.hibernate.xml文件

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 配置映射的包名,一般和对象对应 -->
<hibernate-mapping package="com.hibernate.relationship">
    <!-- 配置数据库的表名 -->
    <class name="User" table="user">
    <!-- 配置字段 -->
        <id name="id" type="int" column="id">
        <!-- 表示使用mysql自带的方法 -->
            <generator class="native"/>
        </id>
    <property name="name"/>
        
        <!-- addressSet属性,Set集合
            table属性:集合表的名称
            key子元素:集合外键的列名
            element子元素:存放集合元素的列的信息
            sort属性:"unsorted|natural|comparatorClass"
                默认为:unsorted
            order-by属性:写的是order by 子句,是SQL语句,是操作的集合表。
                这是在查询数据时指定orderby子句。
        -->
        <set name="addressSet" table="user_addressSet" order-by="address ASC">
            <key column="userId"></key>
            <element type="string" column="address"></element>
        </set>
        
    </class>
    
</hibernate-mapping>



src下的hibernate.cfg,xml的文件配置:

<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory name="foo">
    <!-- 配置数据库的信息 -->
    <property name="dialect">
        org.hibernate.dialect.MySQLDialect
    </property>
    <property name="connection.url">
        jdbc:mysql://localhost:3306/chen
    </property>
    <property name="connection.driver_class">
        com.mysql.jdbc.Driver
    </property>
    <property name="connection.username">root</property>
    <property name="connection.password">123456</property>
    <property name="hbm2ddl.auto">update</property>
    <!-- 执行SQL语句的时候显示SQL语句 -->
    <property name="show_sql">true</property>

<!-- C3P0连接池设定-->
        <!-- 使用c3p0连接池  配置连接池提供的供应商-->
        <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider                                                                                                                                                     </property>
        <!--在连接池中可用的数据库连接的最少数目 -->
        <property name="c3p0.min_size">5</property>
        <!--在连接池中所有数据库连接的最大数目  -->
        <property name="c3p0.max_size">20</property>
        <!--设定数据库连接的过期时间,以秒为单位,
        如果连接池中的某个数据库连接处于空闲状态的时间超过了timeout时间,就会从连接池中清除 -->
        <property name="c3p0.timeout">120</property>
         <!--每3000秒检查所有连接池中的空闲连接 以秒为单位-->
        <property name="c3p0.idle_test_period">3000</property>
        

    <!-- 配置表的信息:注意的是在获取路径信息的时候需要去除前面的Project的名字从包开始
     <mapping resource="com/hibernate/relationship/User.hbm.xml" />
    -->
   

</session-factory>
</hibernate-configuration>

版权声明:本文为博主原创文章,未经博主允许不得转载。

hibernate数据加载方式

在传统的JDBC操作里,通常通过sql语句查询加载所需要的数据,当sql提交之后,这些数据也就被读取待用了,而在hibernate里,我们拥有了更多的数据加载的方式。以实现不同种的需求。   ...

spring加载hibernate映射文件的几种方式

在Spring的applicationContext.xml中配置映射文件,通常是在这个Bean实例中进行的,若配置的映射文件较少时,可以用sessionFactory的所属类LocalSession...

解决Hibernate懒加载的4种方式

本文总结了我在学习hibernate的过程中,解决hibernate懒加载问题的四种方式。 懒加载简述:当我们查询一个对象的时候,在默认情况下,返回的只是该对象的代理对象,当用户去使用该对象的属性时...

hibernate中懒加载禁用的方式

懒加载的概念:懒加载就是hibernate中的延迟加载,在hibernate中的一对多,多对多关系中通过对象导航来查询对象时一般默认的就是懒加载。就是当我们查询一个对象的时候,在默认情况下,返回的只是...

hibernate的两种加载方式get和load

在hibernate中我们知道如果要从数据库中得到一个对象,通常有两种方式,一种是通过session.get()方法,另一种就是通过session.load()方法,然后其实这两种方法在获得一个实体对...

Hibernate数据加载方式

Hibernate数据加载方式有以下几种。 一、即时加载(Immediate Loading) 当实体加载完成后,立即加载与实体相关联的数据。即当实体加载完成后,Hibernate自动立即...

Hibernate的加载方式——GET与LOAD的对比

在Hibernate框架中,最常用到的加载方式就非Get和Load莫属了,然而Get和Load在加载方式上边还有很多的不同,下面让我们来分析一下他们的不同之处。 区别        从返回...

hibernate annotation方式实现属性级延迟加载

1.在POJO文件需要延迟加载的属性上加“ @Basic(fetch = FetchType.LAZY) ” 2、借助类增强器对二进制Class文件进行强化处理(buildtime byteco...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hibernate的直接加载xml的方式
举报原因:
原因补充:

(最多只允许输入30个字)