Hibernate_入门案例

Hibernate 入门案例

1. Maven创建Web工程
在Eclipse中使用Maven创建Web工程。
2. 引入依赖
在pom.xml中引用Hibernate核心包 + MySQL数据库驱动包:

<!--依赖关系-->
<dependencies>
<!--1.引用MySQL依赖-->
<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
</dependency>
<!--2.引用Hibernate依赖-->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate.version}</version>
</dependency>
</dependencies>

3. 创建核心配置文件
在src或resource文件夹下创建Hibernate框架核心配置文件hibernate.cfg.xml
创建hibernate.cfg.xml文件有两种方式:一种通过JBoss插件,一种手写(推荐)

4. 创建持久化类(实体类)
持久化——即将数据永久保存在存储介质上(硬盘)。
创建持久化的类,就是创建实体类(JavaBean),私有化属性、公开set/get方法,并实现序列化。

public class User implements Serializable{
private static final long serialVersionUID = 1L;
private Integer userId;
private String userName;
private String passWord;
private Date regDate;
……
// 省略set和get方法
}

5. 创建持久化类的映射文件
在持久化类的同包或resource文件夹中创建持久化类的映射文件,对象关系映射文件名:类名.hbm.xml
如:User.hbm.xml。

<!--配置类和表的映射关系-->

<hibernate-mapping package="com.zking.ssh.pojo">

<!--class表示类,name代表实体类的全路径或类名,table代表映射的数据库表名-->

<class name="User" table="T_USER">
    <!--1.设置主键及主键策略 -->
        <id name="userId" column="USER_ID" type="java.lang.Integer">
            <generator class="native" />
        </id>
  
   <!-- 2. 实体类属性:
		name表示实体类属性;
		type 表示属性类型全路径名或类名,如果是基本类型,直接写类型名或包装类
		Column中name表示对应表中的列名
	-->
        <property name="userName" column="USER_NAME" type="java.lang.String"/>
        <property name="passWord" column="PASS_WORD" type="java.lang.String"/>
<property name="regDate" column="REG_DATE" type="java.lang.Date"/>

<!-- 3. 配置对象之间的关联关系(重点)一对一、一对多、多对一、多对多-->
    </class>
</hibernate-mapping>

6. 编写访问数据库的代码
6.1.Junit的写法

public class HibernateTest {
private SessionFactory sessionFactory;
private Session session;
private Transaction transaction;

@Before
public void init(){
Configuration configuration = new Configuration().configure();
sessionFactory = configuration.buildSessionFactory();
session = sessionFactory.openSession();
transaction = session.beginTransaction();
}

@After
public void destory(){
transaction.commit();    //当test()执行完无异常则执行after()进行提交
session.close();          //关闭资源
sessionFactory.close();
}

@Test
public void test() {
//1. 添加
		News news = new News(“新闻标题”, “hibernate你大爷”, new Date());
		session.save(news);
//2. 删除
News news = session.get(News.class, new Integer(1));
session.delete(news);
//3. 修改
//加载要修改的数据
News news = session.get(News.class, new Integer(2));
//修改数据
news.setAuthor("习大大");  //修改对象的值,即修改数据库中对象
session.update(news);
//4. 查询
News news = session.get(News.class, 1);	// 1代表主键标识的值,也就是id为1
System.out.println(news.getAuthor());
}
}

: 若忘记在 hibernate.cfg.xml文件中配置 News.hbm.xml 文件,则报org.hibernate.InvalidMappingException: Unable to read XML

注意:如果出现错误,主要是在hibernate.cfg.xml配置文件和mapper映射文件。
尝试指定加载new Configuration().configure(“hibernate.cfg.xml”)
错误:Field ‘id’ doesn’t have a default value
解决:数据库设置id自动增长,因为主键策略是native。

猜你喜欢

转载自blog.csdn.net/qq_41730508/article/details/83788902
今日推荐