Bazy Danych, Ideologie i wierzenia, Osobiste, szkoła etc., Programowanie (IDE, UML, Wzorce...), Programowanie (PHP, Java...)

Co tam Ruby on Rails - sam ActiveRecord jest wspaniały.

18 lutego, 2007 o 17:02:31 Dodaj komentarz Poziom: 0 Permalink

Tyle mówi się o RoR jednak IMHO należałoby także wspomnieć osobno o sercu - ActiveRecord.

Ostatnio trochę myślałem o różnych platformach do napisania aplikacji. Niestety nie webowej więc Railsy skreśliłem na samym początku - niesłusznie. Można wyjąć tylko odpowiednik Hibernate.

  1. require 'rubygems'
  2. require_gem 'activerecord'
  3.  
  4. class Person < ActiveRecord::Base
  5. end
  6.  
  7. ActiveRecord::Base.establish_connection(
  8.     :adapter  => "postgresql",
  9.     :username => "user",
  10.     :password => "you wish you will know",
  11.     :database => "database"
  12. )
  13.  
  14. author = Person.new(:first_name => "John", :last_name => "Brown")
  15. author.save
  16. puts author.id

Odpowiednik w Hibernate. Person.java:

  1. import javax.persistence.*;
  2.  
  3. @Entity(access = AccessType.FIELD)
  4. public class Person {
  5.     @Id
  6.     public Long id;
  7.     public String firstName;
  8.     public String lastName;
  9.     public static void main(String[] args) {
  10.          EntityManagerFactory emf = Persistence.createEntityManagerFactory("pgsql1");
  11.          EntityManager em = emf.createEntityManager();
  12.          
  13.          User u = new User();
  14.          u.firstName = "John";
  15.          u.lastName = "Brown";
  16.          em.persist(u);        
  17.  
  18.          System.out.println(u.id);
  19.  
  20.          em.close();
  21.          emf.close();
  22.     }
  23. }{/java}
  24. <p>I <code class="inline">persistence.xml</code>:</p>
  25. {geshi lang=xml num=true}
  26. <persistence>
  27.    <persistence-unit name="pgsql1" transaction-type="RESOURCE_LOCAL">
  28.       <class>Person</class>
  29.       <properties>
  30.          <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
  31.          <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
  32.          <property name="hibernate.connection.username" value="username"/>
  33.          <property name="hibernate.connection.password" value="you wish you will know"/>
  34.          <property name="hibernate.connection.url" value="jdbc:postgresql://localhost/database"/>
  35.       </properties>
  36.    <persistence-unit>
  37. </persistence>

Pierwsze jest przetestowane - drugiego nie miałem siły ;). Nie twierdzę, że Hibernate nie ma jakiś bardziej zaawansowanych możliwości (gdyż tego nie wiem). Nie twierdzę, że Hibernate/EJB3 można było lepiej zaprojektować. Nie wiem, czy z kompatybilnością wstecz Javę dało się zaprojektować lepiej. Ale ilość kodu da się ocenić na pierwszy rzut oka...

Komentarze do wpisu

Możesz śledzić odpowiedzi poprzez kanał RSS. Możesz dodać komentarz lub zostawić ślad (trackback) ze swojego bloga.

Jeszcze nie ma żadnych komentarzy. Twój może być pierwszy.

Dodaj komentarz

Textile Lite włączony ( szczegółowy opis znaczników ):