Heim  >  Artikel  >  Java  >  Einführung in Hibernate und Beispiele

Einführung in Hibernate und Beispiele

零下一度
零下一度Original
2017-06-25 13:35:451570Durchsuche

1. Einführung in Hibernate

In vielen Szenarien müssen wir JdbcTemplate nicht verwenden, um SQL-Anweisungen direkt auszuführen, um viel zu sparen von Code und Entwicklungszeit. ORM-Tools können den Fokus vom fehleranfälligen SQL-Code auf die Umsetzung der tatsächlichen Anforderungen der Anwendung verlagern.

Springs Unterstützung für ORM-Frameworks bietet Integrationspunkte mit diesen Frameworks und einigen zusätzlichen Diensten:

  • Unterstützt die Integration deklarativer Spring-Transaktionen;

  • Transparente Ausnahmebehandlung;

  • Thread-sichere, leichte Vorlagenklasse;

  • Ressourcenmanagement.

  • Hibernate ist ein Open-Source-ORM-Framework, das in der Entwickler-Community sehr beliebt ist.

2. Spring+Hibernate-Instanz

1. Erstellen Sie eine Datenbanktabelle MySQL, um einen neuen Datenbankspeicher zu erstellen, und führen Sie dann die folgende SQL aus :

db_store.sql
1 create table Category (2 Id int not null,3 Name varchar(80) null,4 constraint pk_category primary key (Id)5 );6 7 INSERT INTO category(id,Name) VALUES (1,'女装');8 INSERT INTO category(id,Name) VALUES (2,'美妆');9 INSERT INTO category(id,Name) VALUES (3,'书籍');
2. CodestrukturDie IDE I Die Verwendung erfolgt über IdeaIU, über Maven. Erstellen Sie das Projekt und konfigurieren Sie Spring über XML. Die fertige Codestruktur lautet:

3. Erstellen Sie die Entitätsklasse Kategorie

Einführung in Hibernate und Beispiele

 
class Category{
    private int cateId;

    private String cateName;

    //次数省略get,set方法
@Override
    public String toString() {
        return "id="+cateId+" name="+cateName;
    }
}
4 .Ändern Sie pom.xml und führen Sie relevante Abhängigkeiten ein.

 
<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.5.Final</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.30</version>
        </dependency>
    </dependencies>
5. Konfigurieren Sie applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns="http://www.springframework.org/schema/beans" xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans  http://www.springframework.org/schema/tx ">


    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/store"></property>
        <property name="username" value="root"></property>
        <property name="password" value="root"></property>
    </bean>

    <bean id="sessionFactory"
          class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:hibernate/hibernate.cfg.xml"/>
    </bean>

    <tx:annotation-driven/>
    <bean id="transactionManager"
          class="org.springframework.orm.hibernate4.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

    <bean id="categoryDao" class="CategoryDao">
        <constructor-arg ref="sessionFactory"></constructor-arg>
    </bean>
</beans>
dataSource ist nichts Besonderes, ich werde es nicht mehr erklären. Schauen Sie sich einige andere Punkte an:

①hibernate sessionFactory:

Die für die Verwendung von Hibernate erforderliche Hauptschnittstelle ist org.hibernate.Session. Die Sitzungsschnittstelle bietet die meisten grundlegende CRUD- und andere Datenzugriffsfunktionen. Über die Sitzungsschnittstelle von Hibernate kann das Repository der Anwendung alle Persistenzanforderungen erfüllen. Die Standardmethode zum Abrufen eines Hibernate-Sitzungsobjekts ist die Verwendung der Implementierungsklasse der Hibernate-SessionFactory-Schnittstelle. In der sessionFactory-Konfiguration werden zwei Haupteigenschaften festgelegt: dataSource legt die Datenverbindung fest und configLocation legt den Pfad zur Ruhezustandskonfigurationsdatei fest.

②Transaction

Wenn der Datenbankbetrieb Transaktionen unterstützt, müssen Sie konfigurieren. 6.Hibernate-Konfiguration

①hibernate.cfg.xml

 
<?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?>
        <!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="dialect">org.hibernate.dialect.MySQLDialect</property>
    <property name="show_sql">true</property>
    <mapping resource="hibernate/Category.hbm.xml"/>
</session-factory>
</hibernate-configuration>
②Category.hbm.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="Category" table="Category">
        <id name="cateId" column="id">
            <generator class="native"/>
        </id>
        <property name="cateName" column="name"/>
    </class>
</hibernate-mapping>
7. Datenzugriffs-Implementierungsklasse CategoryDao

Wenn die Methode Transaktionen unterstützen möchte, muss sie mit @Transactional annotiert werden.

 
public class CategoryDao {
    private SessionFactory sessionFactory;

    public CategoryDao(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    private Session currentSession() {
        return sessionFactory.getCurrentSession();
    }

    @Transactional
    public void save(Category category) {
        currentSession().save(category);
    }

    @Transactional
    public void update(Category category){
        currentSession().update(category);
    }

    @Transactional
    public void delete(int id) {
        Query query = currentSession().createSQLQuery("DELETE FROM category WHERE Id=::ID");
        query.setInteger("::ID", id);
        query.executeUpdate();
    }

    @Transactional
    public int count() {
        return getAll().size();
    }

    @Transactional
    public Category getById(int id) {
        Criteria criteria=currentSession().createCriteria(Category.class);
        criteria.add(Restrictions.eq("id",id));
        return (Category) criteria.uniqueResult();
    }

    @Transactional
    public List<Category> getAll() {
        return currentSession().createCriteria(Category.class).list();
    }
}
8. Test

Das obige ist der detaillierte Inhalt vonEinführung in Hibernate und Beispiele. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn