Heibernate配置

1.导入jar包

2.创建实体类Category

  package pojo;

    //import java.util.List;


    public class Category {
    private String name;
    private int id;
     // private List<Product> products;//每个分类下有一个产品集合
      // List<List<Product>> productsByRow;//产品列表的每一行(首页)

    /*public List<List<Product>> getProductsByRow() {
        return productsByRow;
    }

    public void setProductsByRow(List<List<Product>> productsByRow) {
        this.productsByRow = productsByRow;
    }

    public List<Product> getProducts() {
        return products;
    }

    public void setProducts(List<Product> products) {
        this.products = products;
    }*/

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "id:"+this.getId()+",name:"+this.getName();
    }
}

3.配置实体类对应的配置文件Category.hbm.xml

   <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/HIbernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">    
    <hibernate-mapping package="pojo">
    <class name="Category" table="category">
        <id name="id" column="id" type="integer">
        <generator class="native"></generator>
        </id>
        <property name="name" type="string"></property>
    </class>
    </hibernate-mapping>

4.配置hibernate.cfg.xml


    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/HIbernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

    <hibernate-configuration>
    <session-factory>
        <!-- 基本配置 -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="connection.url">jdbc:mysql://localhost:3306/tmall?characterEncoding=UTF-8</property>
        <property name="connection.username">root</property>
        <property name="connection.password">root</property>
        <!-- 其他配置 -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">update</property>
        <property name="javax.persistence.validation.mode">none</property>
        <!-- 映射文件 -->
        <mapping resource="pojo/Category.hbm.xml"/>
    </session-factory>
    </hibernate-configuration>

5.测试

 package test;
    import java.util.List;
    import org.hibernate.Query;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.classic.Session;

    import pojo.Category;



    public class TestHibernate {
    public static void main(String[] args) {

        SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
        Session session = sessionFactory.openSession();

        session.beginTransaction();
        Query query = session.createQuery("from Category c where c.name = ?");
        query.setString(0, "测试类别test");
        List<Category> list = query.list();

        for(Category c:list){
            System.out.println(c);
        }

        session.getTransaction().commit();
        session.close();
        sessionFactory.close();
    }
}

一些错误信息:

>
    org.hibernate.MappingException: entity class not found
    解决:对应的映射文件的class name 要写绝对路径
>
    org.hibernate.HibernateException: Unable to get the default Bean 
    原因:在hibernate.cfg.xml的配置中如果没有配置<property name="javax.persistence.validation.mode"></property>的话,默认它是auto的,它会自动去classpath下寻找validator
    解决:在配置文件中配置<property name="javax.persistence.validation.mode">none</property>

>
    org.hibernate.MappingException:  not found while looking for property: id
    解决:映射文件中把class每个属性的值加上类型
>
    org.hibernate.MappingNotFoundException: resource:ssh.pojo/Category.hbm.xml not found
    解决:把ssh.pojo/Category.hbm.xml中的点改成斜杠即可ssh/pojo/Category

注意:

>   
    Query query = session.createQuery("from Category c where c.name = ?");
    query.setString(0, "测试类别test");
1.Catgeory c<br>
2.参数从0开始索引
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值