hibernate入门案例
最近准备学ssh,今天学了一下hibernate,用的是hibernate4,现在已经出5了;配置文件很容易写错,写配置文件的时候尽量复制。
需要的jar包如下:(jar包我是直接放在项目工程里面了,如果直接是build-path导入jar包,这样当本地的jar包路径变化时,项目工程就上面就会出红色惊叹号,放在工程里就不会出现这个问题了)
两个配置文件位置如下:
src下需要一个名为:hibernate.cfg.xml的配置文件,因为在hibernate底层代码中,读取的配置文件名字默认是这个。
hibernate.cfg.xml中的内容需要配置数据库的连接信息,以及对象和表关系映射的配置文件。
红色部分是数据库连接的url,其中test数据库需要我们自己在root用户下提前建立好。
<?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="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库连接驱动 --> <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
<!-- 数据库连接用户名和密码 --> <property name="connection.username">root</property> <property name="connection.password">qige</property> <!-- 方言 不同数据库有不同的方言 --> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <!-- 控制台显示SQL --> <property name="show_sql">true</property> <!-- 自动更新表结构 --> <property name="hbm2ddl.auto">update</property>
<!--student类下的配置文件--> <mapping resource="com/model/Student.hbm.xml"/> </session-factory> </hibernate-configuration>
以下是对象和表的映射配置文件,需要配置对象中属性和数据库表的对应关系。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.model.Student" table="tb_student"><!-- 每个class对应一个持久化对象 --> <id name="studentID" type="string"><!-- id元素用来定义主键标识,并指定主键生成策略 --> <generator class="assigned"></generator> </id> <property name="studentName"></property><!-- 映射password属性 --> <property name="studentSex"></property><!-- 映射studentName属性 --> </class> </hibernate-mapping>
然后测试一下:
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; import org.hibernate.cfg.Configuration; import org.hibernate.service.ServiceRegistry; import com.model.Student; public class Test { public static void main(String[] args) { Configuration configuration=new Configuration().configure(); // 实例化配置文件 ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build(); //实例化服务登记 SessionFactory sessionFactory=configuration.buildSessionFactory(serviceRegistry); // 获取Session工厂 Session session=sessionFactory.openSession(); // 生成一个session session.beginTransaction(); // 开启事务 由session开启事务,session的事务默认是关闭的,必须要手动开启 Student s=new Student(); s.setStudentID("001"); s.setStudentName("张三"); session.save(s); session.getTransaction().commit(); // 提交事务 session.close(); // 关闭session sessionFactory.close(); // 关闭session工厂 } }
如果控制台没有报错的话,可以在控制台看到hibernate为我们执行的操作,已经插入了一条语句到数据库中了
数据库里已经有了一张表,并且插入了一条数据。