对hibernate的入门理解!

xiaoxiao2025-10-17  11

 一、hibernate是属于ORM(Object Relational Mapping)框架的一员,它代替的是JavaEE中dao层,以操作实体类来代替操作数据库的操作,也就是CRUD操作。其底层就是对JDBC的封装。

二、说一下hibernate的使用步骤吧

首先导入jar包编写实体类编写实体类的映射文件编写核心配置文件(主配置文件)最后就是对数据库的操作了

三、详细介绍一下使用步骤

1.导入jar包这个是hibernate的jar包,此外我们还需要导入一个mysql的jar包这里记得要添加“小奶瓶哦!”2.编写实体类就是简单的一个Java类了,并生成其属性的get和set方法3.编写实体类的映射文件此处推荐将实体类的映射文件就放在实体类的包中,并且名字和实体类的名字保持一致,其后缀名必须是.hbn.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> <!-- 将实体类与数据库进行连接,class中的name是我们的实体类的类路径,而table就是实体类在数据库中的表名 --> <class name="com.czw.domain.Monkey" table="monkey"> <!-- 设置主键,name是实体类中的自己设置的属性值,而column是数据库中表的字段名,可以不写,不写默认就是实体类中的属性名 --> <id name="m_id" column="mm_id"> <!-- 设置主键的增长方式,有多种算法,我们选择nayive,它是identity、hilo和sequence的集合,会从这三种算法中自动选择 --> <generator class="native"></generator> </id> <!-- 设置字段,property中也可以将 写column, --> <property name="m_name" column="mm_name"></property> <property name="m_age"></property> <property name="m_sex"></property> </class> </hibernate-mapping>

<!DOCTYPE hibernate-mapping PUBLIC      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">     <hibernate-mapping>可以在我们导入的jar包中寻找

这是其位置,找到后直接复制放到,实体类的映射文件中即可

接着我们就可以按照上面的代码进行配置了。

4.编写核心配置文件

这里需注意的一点就是是这个主配置文件必须放在src目录下,并且其名字必须为hibernate.cfg.xml。注意和实体类映射文件进行区分。详细的解释在代码里都有,可以仔细看看代码哟!

<?xml version="1.0" encoding="UTF-8"?> <!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> <!-- 对数据库的配置 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql:///coding</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <!-- 对hibernate的配置 --> <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <!-- 将Monkey.hbm.xml与hibernate.cfg.xml相连接 --> <mapping resource="com/czw/domain/Monkey.hbm.xml"/> </session-factory> </hibernate-configuration>

 

<!DOCTYPE hibernate-configuration PUBLIC     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"     "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">这个和实体类的映射文件配置一样,下面的是其位置,直接复制并放在我们的配置文件中即可。

5.对数据库的操作

这个我们可以在一个测试类中写,其代码如下:

import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.junit.Test; import com.czw.domain.Monkey; public class MonkeyTest { @Test public void add(){ //1.获取配置文件对象 Configuration config=new Configuration().configure(); //2.构建sessionFactory SessionFactory factory = config.buildSessionFactory(); //3.生产session -->可以理解为jdbc里的Connection Session session=factory.openSession(); //4.开启事务 Transaction beginTransaction = session.beginTransaction(); //5.进行数据库操作 Monkey monkey=new Monkey(); monkey.setM_name("jack"); monkey.setM_age(6); monkey.setM_sex("雄性"); //将对象的状态从瞬时态转变为持久态 session.save(monkey); //6.事务提交或回滚 beginTransaction.commit(); // beginTransaction.rollback(); //7.释放资源 session.close(); factory.close(); } }

其运行结果为

其他的操作也是可以的

@Test public void update(){ //1.获取配置文件对象 Configuration configure = new Configuration().configure(); //2.获取session工厂 SessionFactory factory = configure.buildSessionFactory(); //3.生产session Session session = factory.openSession(); //4.开始事务 Transaction transaction = session.beginTransaction(); //5.对数据库的操作 Monkey monkey=session.get(Monkey.class, 1); monkey.setM_name("Alice"); monkey.setM_sex("女"); session.saveOrUpdate(monkey); //6.事务提交或回滚 transaction.commit(); //7.关闭资源 session.close(); factory.close(); }

还有

好了,这个简单的hibernate 的入门介绍就差不多了,看完的同学是否觉得测试类中的某些代码写的很冗余呢,是否可以写一个工具类进行简化代码呢?

转载请注明原文地址: https://www.6miu.com/read-5038064.html

最新回复(0)