Hibernate ist ein Open-Source-ORM-Framework, dessen Kernidee ORM (Object Relational Mapping) ist, mit dem Informationen in der Datenbank über Objekte verwaltet werden können. Es wird gesagt, dass Entwickler mit Datenbank-SQL nicht sehr vertraut sind Dies trägt auch zur Leistungsfähigkeit von Hibernate bei. Es ist nicht erforderlich, dass Entwickler mit SQL-Anweisungen vertraut sind, um die Datenbank automatisch zu generieren und auszuführen.
Durch die Verwendung des Ruhezustands können Entwickler die Datenbank vollständig mit objektorientiertem Denken betreiben. Daher enthält die folgende Demonstration keine SQL-Anweisung. Wenn ja, behandeln Sie sie bitte so, als hätte ich dies nicht gesagt!
In diesem Artikel wird der Ruhezustand verwendet, um einfache grundlegende Vorgänge zum Hinzufügen, Löschen, Ändern und Abfragen einer Personendatentabelle zu implementieren.
Umgebung: win7+eclipse
Toolkit: Hibernate-Paket, das heruntergeladen werden kann ;
Datenbankverbindungstreiberpaket, in diesem Beispiel wird MySQL verwendet
package demo.pojo; public class Person {private Integer id;private String name;private String gender;private Integer age;public Integer 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 String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Person [id=" + id + ", name=" + name + ", gender=" + gender + ", age=" + age + "]";}}
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 以下四行分别为:数据库驱动类、Drivermanager获取连接的参数URL、用户名、密码 --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://127.0.0.1/web?characterEcoding=utf-8</property> <property name="connection.username">root</property> <property name="connection.password">123456</property> <!-- 设置方言,hibernate会根据数据库的类型相应生成SQL语句 --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- 控制台显示生成的sql语句,默认为false --> <property name="show_sql">true</property> <!-- 映射配置源文件的位置 --> <mapping resource="demo/pojo/Person.hbm.xml"/> </session-factory> </hibernate-configuration>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <!-- name是实体类全名,table为数据表名 --> <class name="demo.pojo.Person" table="Person"> <id name="id" column="id"> <!-- 主键生成方式,native是让hibernate自动识别 --> <generator class="native"></generator> </id> <!--
Hinweis:
0. Der Namenswert ist der Attributname in der Entitätsklasse und die Spalte ist der Feldname in der Datentabelle.
1. Wenn der Attributname in der Entitätsklasse mit dem entsprechenden Feldnamen in der Datentabelle übereinstimmt , die folgende Spalte Es kann weggelassen werden, der Ruhezustand wird automatisch abgeglichen, z. B. das Alter unten
2. Im Gegenteil, wenn sich der Attributname in der Entitätsklasse vom Feldnamen der entsprechenden Datentabelle unterscheidet, werden beide Elemente angezeigt B. Geschlecht und Geschlecht unten geschrieben werden
- ->
<property name="name" column="name"></property> <property name="gender" column="sex"></property> <property name="age"></property> </class> </hibernate-mapping>
package demo.util; import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder; public class HibernateSessionFactory {private static SessionFactory factory;private static ThreadLocal<Session> thread = new ThreadLocal<Session>();private static String path = "hibernate.cfg.xml";private static Configuration config = new Configuration();static {config.configure(path);ServiceRegistry service = new ServiceRegistryBuilder()//定义一个服务注册机.applySettings(config.getProperties()).buildServiceRegistry();factory = config.buildSessionFactory(service);//创建Session工厂类}/** * 从hibernate的session工厂类里创建一个session * @return * */public static Session getSession() {Session session = thread.get();if(session == null || !session.isOpen()) {session = factory.openSession();thread.set(session);}return session;}public static void closeSession() {Session session = thread.get();if(session != null && session.isOpen()) {session.close();thread.set(null);}}}
package demo.dao; import java.io.Serializable;import org.hibernate.Session;import org.hibernate.Transaction;import demo.pojo.Person;import demo.util.HibernateSessionFactory; public class PersonDaoImpl {//增删改查,此处以增为例public boolean add(Person p) {Session session = HibernateSessionFactory.getSession();//创建SessionTransaction trans = session.beginTransaction();//开启事务try {Serializable id = session.save(p);//添加记录并获取主键值System.out.println(id+"为获取的主键值");//控制台查看主键值trans.commit();//提交事务return true;} catch (Exception e) {trans.rollback();//获取异常,则事务回滚} finally {HibernateSessionFactory.closeSession();//关闭Session}return false;}}
package demo.test; import org.junit.Test;import demo.dao.PersonDaoImpl;import demo.pojo.Person; public class TestPerson {@Testpublic void testAdd() {//创建一个人类对象Person p = new Person();p.setName("张三");p.setGender("男");p.setAge(18);//创建dao层类对象并调用添加方法PersonDaoImpl dao = new PersonDaoImpl();dao.add(p);}}
Das obige ist der detaillierte Inhalt vonVerwenden Sie den Ruhezustand, um Vorgänge für die Personendatentabelle zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!