hibernate的直接加载xml的方式

来源:互联网 发布:mac能用的同步盘 编辑:程序博客网 时间:2024/05/01 04: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>

0 0
原创粉丝点击