2010-06-21 8 views
25

Jakie jest prawidłowe sintax instrukcji wstawiania JPA? Może to brzmi jak łatwe pytanie, ale nie byłem w stanie znaleźć odpowiedzi.Wstawianie instrukcji JPA

Wiem, jak to zrobić z kodu Java, ale szukam sposobu wstawiania obiektów do bazy danych, jeśli baza danych została utworzona.

Wszelkie pomysły?

+0

Oto dobry przypadek, w którym najmniej poprawna odpowiedź jest oznaczona jako właściwe rozwiązanie. Proszę rozważyć oznaczenie jako poprawne odpowiedzi na frm lub Ben Hoffstein. –

Odpowiedz

1

Opcja, która do tej pory wygląda bardziej obiecująco, to: Flyway. Jest to bardziej zautomatyzowany sposób wykonania i obsługuje proces aktualizacji baz danych w zasadzie automatycznie.

26

Brak instrukcji INSERT w WZP. Musisz wstawić nowe jednostki za pomocą EntityManager. Jedyne instrukcje dozwolone w WZP to SELECT, UPDATE i DELETE.

+1

Widziałem natywny SQL używany do tego celu, ale w jaki sposób można to napisać dla wszystkich dostawców baz danych? Hibernacja ma taką funkcję, możesz dołączyć plik o nazwie "import.sql" do ścieżki klasy środowiska wykonawczego Hibernate. W momencie eksportu schematu wykona instrukcje SQL zawarte w tym pliku po wyeksportowaniu schematu. Szukam bardziej ogólnego podejścia do tego, ponieważ używam Eclipselink. – javydreamercsw

16

Oto good reference dla utrzymujących się obiektów JPA przy użyciu EntityManager. Jako przykład można wstawić obiekty przy użyciu metody persist:

EntityManager em = getEntityManager(); 
em.getTransaction().begin(); 

Employee employee = new Employee(); 
employee.setFirstName("Bob"); 
Address address = new Address(); 
address.setCity("Ottawa"); 
employee.setAddress(address); 

em.persist(employee); 

em.getTransaction().commit(); 
+1

Jak już wspomniałem, wiem, jak to zrobić z poziomu Javy. Szukam sposobu użycia standardowych wstawek, gdy baza danych jest tworzona oprócz hardcoding go w java. – javydreamercsw

+0

Gotcha - przepraszam, źle zrozumiałem pytanie. –

+0

Bez problemu. W każdym razie dzięki! – javydreamercsw

5

Jeśli chcesz wstawić dane do bazy danych poza java, musisz użyć natywnego kodu SQL. Użyj standardu SQL, aby upewnić się, że większość baz danych może wykonać skrypt. Gdy aplikacja zostanie uruchomiona, JPA dokona mapowania nowych danych i przekształci je w obiekty w razie potrzeby.

Jak upewnić się, że skrypt działa we wszystkich bazach danych? ten sam problem, który ma każdy DBA podczas tworzenia Procedur Sklepu lub natywnych zapytań ... to dlatego JPA istnieje, aby uniknąć robienia tego bezpośrednio w SQL, ale wiem, że czasami jest potrzebny w ten sposób.

Proponuję zrobić 3 główne skrypty. Jeden dla Oracle, jeden dla SQL Server (są pewne problemy w datachpach dat z wersji 2005 na 2008, więc bądź ostrożny) i jeden dla MySQL. Uruchom swój skrypt za pomocą standardowego kodu SQL i podczas testowania go w tych bazach danych znajdziesz kilka poprawek, które musisz wykonać dla każdego systemu DBMS.

Jeden masz go, możesz zrobić plik skryptu (* .sql) i uruchomić go z menedżerem DB. Jeśli działa, uruchom serwer, umieść aplikację online, a dane zostaną zintegrowane.

+0

Tak właśnie to zrobiłem. Szukałem bardziej automatycznego sposobu, ale musiałem go zakodować, aby wykonać taką pracę. – javydreamercsw