2015-09-21 5 views
0

Можем ли мы использовать аннотацию JPA для создания модели домена (классов, отношений и наследия) вместо конфигурации hbm, а затем использовать Sessionfactory для выполнения операций CRUD. Я имею в виду, что можно использовать аннотацию без использования persistence.xml и Entitymanager? Мне задают этот вопрос, потому что в hibernate doc всегда описывают аннотацию JPA к persistence.xmlHibernate 5 с аннотацией

+2

Да, это возможно, и даже рекомендуется. Я бы пошел дальше и сорвал собственный API Session/SessionFactory. Почему вы не хотите использовать стандартный API JPA? –

+0

Спасибо за ваш ответ. У меня есть старое приложение, и я хотел бы изменить hbm на аннотации. Мне не нравится изменять файл cfg и слой DAO. – Yosr

+0

Хотя это не спящий режим 5, и он довольно старый, вы можете найти некоторые JPA-аннотированные и используемые SessionFactory примеры [здесь] (https://github.com/bhdrkn/Hibernate-Examples). Надеюсь, это будет полезно для вас. – bhdrkn

ответ

2

Да можно использовать аннотацию без использования persistence.xml и менеджера сущностей.

Вы можете достичь того же, используя авангардные подход с использованием:

  • SessionFactory
  • Сделка
  • Session

Для получения дополнительной информации, пожалуйста, посетите этот пост: - http://techpost360.blogspot.se/2015/12/hibernate-5-maven-example.html

package com.hibernate.tutorial.entity; 

import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.Id; 
import javax.persistence.Table; 

@Entity 
@Table(name = "employee") 
public class Employee { 

@Id 
@Column(name = "id") 
Long id; 

@Column(name="employee_name") 
String employeeName; 

@Column(name="employee_address") 
String employeeAddress; 

public Employee(Long id, String employeeName, String employeeAddress) { 
    this.id = id; 
    this.employeeName = employeeName; 
    this.employeeAddress = employeeAddress; 
} 

public Employee() { 

} 

public Long getId() { 
    return id; 
} 

public void setId(Long id) { 
    this.id = id; 
} 

public String getEmployeeName() { 
    return employeeName; 
} 

public void setEmployeeName(String employeeName) { 
    this.employeeName = employeeName; 
} 

public String getEmployeeAddress() { 
    return employeeAddress; 
} 

public void setEmployeeAddress(String employeeAddress) { 
    this.employeeAddress = employeeAddress; 
} 

} 

Основной класс для вставки записи в таблицу Employee

package com.hibernate.tutorial.mainclass; 

import org.hibernate.Session; 
import org.hibernate.SessionFactory; 
import org.hibernate.Transaction; 
import org.hibernate.cfg.Configuration; 

import com.hibernate.tutorial.entity.Employee; 

public class Hibernate5InsertTest { 

public static void main(String[] args) { 
    SessionFactory sessionFactory; 
    sessionFactory = new Configuration().configure().buildSessionFactory(); 

    Session session = sessionFactory.openSession(); 

    Transaction tx = session.beginTransaction(); 

    Employee emp = new Employee(); 
    emp.setId(new Long(1)); 
    emp.setEmployeeName("Rahul Wagh"); 
    emp.setEmployeeAddress("Indore, India"); 
    session.save(emp); 
    tx.commit(); 
    session.close(); 
} 
} 

Я надеюсь, что этот пример решает вашу проблему

Смежные вопросы