2010-08-03 2 views
4

J'essaie d'utiliser Hibernate pour la première fois, et très tôt dans le guide de démarrage, il fait référence à Maven. Si je ne me trompe pas, Maven semble être un outil de construction. Cependant, j'ai utilisé Eclipse pour construire mon projet jusqu'à présent.Ai-je besoin de Maven pour utiliser Hibernate?

Y at-il un moyen pour moi d'utiliser Hibernate sans avoir besoin de Maven? Puis-je faire ce dont j'ai besoin via Eclipse? Quelqu'un at-il un lien vers une ressource qui peut me montrer comment faire cela?

Répondre

4

Vous n'avez pas besoin de maven pour utiliser Hibernate. Maven offre la facilité d'avoir une seule dépendance pour inclure tous les pots nécessaires. Sans maven, vous devrez télécharger et importer chaque jar sur lequel repose Hibernate. Ce serait un processus manuel.

Hibernate ne dépend pas de maven comme il le dit javax.sql.

+2

vous pouvez également * * Maven intérieur éclipse. Vérifiez le plugin m2eclipse si vous êtes intéressé. –

+0

@Chris Nava, vous avez raison et ça marche plutôt bien. Regardez aussi le plugin maven-eclipse-plugin qui construit bien votre .project. –

8

Non, bien sûr que non. Je n'utilise jamais Maven - jamais, pour n'importe quoi. Continuez à utiliser Eclipse pour créer vos projets. Je trouve qu'il est assez difficile d'apprendre une nouvelle chose à la fois. Si vous êtes en train d'apprendre Hibernate, pourquoi compliquer votre vie avec Maven?

Mise à jour: Cela fait six ans que j'ai écrit cette réponse. Vous n'avez toujours pas besoin de Maven pour utiliser Hibernate, mais j'ai changé d'avis sur celui que je recommanderais. J'ai appris que Maven est le meilleur moyen de gérer les dépendances et le cycle de vie des projets. Hiberner? Toujours pas de raison pour cela. Restez simple et évitez l'ORM jusqu'à ce que ce soit essentiel.

+0

J'ai essayé de commencer à apprendre Hibernate pendant 2 jours. J'ai supposé qu'il serait plus facile de suivre la voie populaire «construire et courir avec maven». Ce n'était pas réellement. Je n'ai aucune idée de ce qui se passe et j'essaie de comprendre ce qui manque ou ce qui ne va pas. Jusqu'à présent, je ne connais pas encore les bases d'Hibernate et je cherche encore un moyen de le construire et de le lancer. Kinda ennuyeux ... –

+0

Pourquoi ajouter deux choses que vous ignorez? Brisez le problème. Pourquoi pensez-vous avoir besoin d'Hibernate? Peut-être que c'est le vrai problème. Quel avantage cela va-t-il vous apporter? Je n'en vois aucun. – duffymo

2

Vous n'avez pas besoin de Maven pour utiliser Hibernate. Sans Maven, il vous suffira de télécharger et d'ajouter les dépendances jar au projet manuellement, ce qui n'est pas difficile. Et vous pouvez utiliser n'importe quel processus de construction que vous utilisez.

2

Eh bien, je suis en retard dans cette réponse . Mais néanmoins, cela aidera les futurs lecteurs. Ici, j'ajoute comment configurer un projet sans Maven.

Configuration

  1. Télécharger 5 Mise en veille prolongée de here.
  2. Extrayez les fichiers JAR nécessaires du dossier à l'intérieur et ajoutez-les au chemin de génération en suivant hibernate-release-5.0.7.Final.zip\hibernate-release-5.0.7.Final\lib\required.
  3. Assurez-vous que les bocaux suivants sont ajoutés au classpath du projet:

    antlr-2.7.7.jar 
    commons-dbcp2-2.1.1.jar 
    dom4j-1.6.1.jar 
    geronimo-jta_1.1_spec-1.1.1.jar 
    hibernate-commons-annotations-5.0.1.Final.jar 
    hibernate-core-5.0.7.Final.jar 
    hibernate-jpa-2.1-api-1.0.0.Final.jar 
    jandex-2.0.0.Final.jar 
    javassist-3.18.1-GA.jar 
    javax.servlet.jsp.jstl-api-1.2.1-sources.jar 
    jboss-logging-3.3.0.Final.jar 
    sqljdbc4-3.0.jar //or whatever database you use 
    hibernate-entitymanager-5.0.7.Final 
    

code:

Employee.java

import java.io.Serializable; 

public class Employee implements Serializable{ 

    private static final long serialVersionUID = 1L; 
    private int id; 
    private String firstName; 
    private String lastName; 
    private int salary; 
    //setters and getters 
} 

HibernateUtil .java:

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

public class HibernateUtil { 

    private static final SessionFactory sessionFactory = buildSessionFactory(); 

    private static SessionFactory buildSessionFactory() { 
    try { 
     // Create the SessionFactory from hibernate.cfg.xml 
     return new Configuration().configure().buildSessionFactory(); 
    } 
    catch (Throwable ex) { 
     // Make sure you log the exception, as it might be swallowed 
     System.err.println("Initial SessionFactory creation failed." + ex); 
     throw new ExceptionInInitializerError(ex); 
    } 
} 

public static SessionFactory getSessionFactory() { 
    return sessionFactory; 
} 

public static void shutdown() { 
    // Close caches and connection pools 
    getSessionFactory().close(); 
    } 

} 

Accès Hibernate:

public void hibernateTest(){ 
     System.out.println("Maven + Hibernate + MySQL"); 
     Session session = HibernateUtil.getSessionFactory().openSession(); 

     session.beginTransaction(); 
     Employee e = new Employee(); 
     System.out.println("Beginning transaction"); 
     e.setFirstName("Pritam Test Again"); 
     e.setLastName("Banerje"); 
     e.setSalary(12); 

     session.save(e); 
     session.getTransaction().commit(); 
    } 

Créer une table requête:

CREATE TABLE EMPLOYEE123 
(ID INTEGER, 
FIRST_NAME VARCHAR, 
LAST_NAME VARCHAR, 
SALARY INTEGER); 

fichiers de configuration peut être quelque chose standard pour ce genre de fichiers. Voici un exemple de Employee.hbm.xml. N'oubliez pas de mettre correctement les noms des paquets.

<class name="com.sow.application.Employee" table="EMPLOYEE123"> 
    <meta attribute="class-description"> 
    This class contains the employee detail. 
    </meta> 
    <id name="id" type="int" column="id"> 
    <generator class="native"/> 
    </id> 
    <property name="firstName" column="first_name" type="string"/> 
    <property name="lastName" column="last_name" type="string"/> 
    <property name="salary" column="salary" type="int"/> 
</class> 

Et voici le fichier XML de configuration hibernate.cfg.xml:

<hibernate-configuration> 
<session-factory> 
<property name="hibernate.dialect"> 
    org.hibernate.dialect.SQLServerDialect 
</property> 
<property name="hibernate.connection.driver_class"> 
    com.microsoft.sqlserver.jdbc.SQLServerDriver 
</property> 

<property name="hibernate.connection.url"> 
    jdbc:sqlserver://localhost:1444 
</property> 
    <property name="hibernate.default_schema">dbo</property> 
<property name="hibernate.connection.username"> 
    UserName 
</property> 
<property name="hibernate.connection.password"> 
    Password 
</property> 

<!-- List of XML mapping files --> 
<mapping resource="com/sow/application/Employee.hbm.xml"/> 

</session-factory> 
</hibernate-configuration>