


Utilisez la mise en veille prolongée pour implémenter des opérations sur la table de données de personne
Jul 26, 2017 pm 04:39 PMHibernate est un framework ORM open source. Comme son nom l'indique, son idée principale est ORM (Object Relational Mapping), qui peut exploiter les informations de la base de données via des objets. On dit que les développeurs ne sont pas très familiers avec le SQL des bases de données. au début. Cela contribue également à la puissance d'Hibernate. Il n'est pas nécessaire que les développeurs soient familiers avec les instructions SQL pour faire fonctionner la base de données. Hibernate peut générer automatiquement des instructions SQL et les exécuter automatiquement.
L'utilisation d'hibernate permet aux développeurs d'utiliser entièrement la pensée orientée objet pour faire fonctionner la base de données, donc la démonstration suivante ne contiendra pas d'instruction SQL. S'il y en a, veuillez la traiter comme si je n'avais pas dit cela !
Cet article utilise la mise en veille prolongée pour implémenter des opérations de base simples d'ajout, de suppression, de modification et d'interrogation sur une table de données de personne.
Travail de préparation
Environnement : win7+eclipse
Toolkit : package hibernate, téléchargeable Dans cet exemple, la version 4. ;
Package de pilotes de connexion à la base de données, dans cet exemple, mysql est utilisé
Diagramme de structure du programme
couche pojo classe d'entité
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 + "]";}}
Fichier de configuration de base hibernate.cfg.xml
<?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>
Fichier de mappage Person.hbm.xml
<?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> <!--
Remarque :
0. La valeur du nom est le nom de l'attribut dans la classe d'entité et la colonne est le nom du champ dans la table de données
1. Lorsque le nom de l'attribut dans la classe d'entité est le même que le nom du champ de la table de données correspondante ; , la colonne suivante peut être omise, la mise en veille prolongée correspondra automatiquement, comme l'âge ci-dessous
2. Au contraire, lorsque le nom de l'attribut dans la classe d'entité est différent du nom de champ de la table de données correspondante, les deux éléments doit être écrit, comme le genre et le sexe ci-dessous
- ->
<property name="name" column="name"></property> <property name="gender" column="sex"></property> <property name="age"></property> </class> </hibernate-mapping>
Classe d'usine de session
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);}}}
La couche DAO encapsule les méthodes d'opérations sur les données
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;}}
Classe de test TestPerson
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);}}
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Le moyen le plus simple d'interroger le numéro de série du disque dur

Comment rédiger un générateur simple de rapports sur les performances des étudiants en utilisant Java ?

Comment écrire un système de réservation en ligne simple via PHP

Démarrage rapide : utilisez les fonctions du langage Go pour implémenter un système de gestion de bibliothèque simple

Comment utiliser PHP pour développer des fonctions simples de gestion de fichiers

Comment écrire un système simple de recommandation musicale en C++ ?

Comment intégrer Hibernate dans le projet SpringBoot

Écrire un programme de calculatrice simple en C/C++
