Przeprowadziłem własne badania i zrozumiałem podstawową koncepcję. Ale niektóre spostrzeżenia można uzyskać jedynie poprzez rzeczywiste doświadczenie.
Jakie zalety myBatis sprawiłyby, że warto nauczyć się nowych ram?
W jakim przypadku uniknąłbyś go?
orm
database-development
hibernate
Kshitiz Sharma
źródło
źródło
Odpowiedzi:
Zastanów się, co próbujesz osiągnąć. Zazwyczaj model segregacji odpowiedzi na komendy poleceń działa dobrze w przypadku złożonych domen.
Powodem jest to, że zazwyczaj próbujesz zrobić jedną z dwóch rzeczy:
Hibernacja działa dobrze w przypadku 1, umożliwiając wykonanie POJO i utrwalenie / zaktualizowanie go. Robi to również szybko, chyba że Twoja domena jest dość duża.
myBatis jest świetny do pobierania zapytań (przypadek 2), w których potrzebujesz odpowiedzi. Hibernacja spróbowałaby załadować cały wykres obiektu i trzeba by zacząć strojenie zapytań za pomocą sztuczek LazyLoading, aby działało ono w dużej domenie. Jest to ważne przy uruchamianiu złożonych zapytań analitycznych, które nawet nie zwracają obiektów encji. Hibernacja oferuje tylko SqlQuery i transformatory fasoli w tym przypadku z dużymi domyślnymi typami, takimi jak BigDecimal, podczas gdy myBatis może łatwo mapować na prosty nie-byt POJO.
Te dwa przypadki różnią się między poleceniami, w których chcesz zmienić dane domeny, a odpowiedziami, w których chcesz tylko pobrać niektóre dane.
Rozważ te dwa przypadki i to, co robi twoja aplikacja. Jeśli masz prostą domenę i po prostu pobierasz informacje, użyj myBatis. Jeśli masz złożoną domenę i trwałe obiekty, użyj Hibernacji. Jeśli zrobisz oba, rozważ podejście hybrydowe. Tego używamy w naszym projekcie, który ma tysiące podmiotów, aby utrzymać go pod kontrolą. ;)
źródło
MyBatis jest zorientowane na SQL. Pomaga ci wywoływać instrukcje SQL i wyniki mapowania (tabele) do obiektów obiektów.
Główną zaletą jest to, że nie jest to ORM. Nie odwzorowuje tabel na obiekty, więc nie występuje niedopasowanie impedancji orm. Dobrze pasuje do złożonych lub starszych baz danych lub do korzystania z funkcji db, takich jak procedury składowane, widoki i tak dalej.
Jest dość prosty i łatwy do nauczenia, więc pasuje również do drużyn o niskich umiejętnościach, ponieważ nie ma potrzeby posiadania hibernacji wśród guru.
Zajrzyj na stronę jpetstore 6 http://mybatis.org/spring/sample.html
źródło
Ponieważ pytanie odnosi się do mojego komentarza , oto co miałem na myśli pisząc to.
Przede wszystkim pochodzi z kontekstu twojego pierwotnego pytania. W innych okolicznościach mógłbym udzielić innej porady. To, co skłoniło mnie do zasugerowania MyBatis, to:
W jednym z poprzednich projektów nasz zespół rozważał przejście z Hibernacji z powodów, które opisałeś. Podobnie jak Ty, zamierzaliśmy przejść na JDBC, ale koledzy z innego projektu polecili nam MyBatis. Zespół postanowił spróbować, zachowując JDBC jako opcję awaryjną w przypadku, gdyby coś poszło nie tak.
W tym momencie nie wiedziałem nic o MyBatis, ale miałem wystarczająco dużo doświadczenia z JDBC, aby mieć pewność, że wykona to zadanie. Mimo to zdecydowanie popierałem pomysł wypróbowania MyBatis, głównie dlatego, że zgodnie z moim przeszłym doświadczeniem, ilość kodu, który musielibyśmy napisać za pomocą JDBC, byłaby po prostu zniechęcająca.
W każdym razie wypróbowaliśmy MyBatis i działało ono zgodnie z reklamą. Dlatego napisałem komentarz, o który pytasz.
W przypadku, gdy oczekujesz ode mnie szczegółowego przeglądu technologii lub w jakiś sposób chwalę jej wyższość - przepraszam, że nie mogę tego zrobić. Gdybym mógł - napisałbym to już w osobnej odpowiedzi na twoje pierwotne pytanie zamiast krótkiego komentarza. Wspomniałem, że wtedy nic nie wiedziałem o MyBatis - cóż, wciąż mam dość małą wiedzę na ten temat, przepraszam. Przejście z Hibernacji zostało wykonane przez innych członków zespołu i nie wpłynęło to na kod, nad którym pracowałem. Przypomniałem sobie tylko kluczowe rzeczy na wynos (na podstawie których skomentowałem), a mianowicie, że 1) MyBatis rozwiązało problemy, które mieliśmy z Hibernacją, 2) nie wprowadziło własnych problemów i 3) pozwoliło nam uniknąć pisania kodu I oczekiwał na wypadek, gdybyśmy przestawili się na JDBC. To wszystko.
źródło
Hibernacja jest znana ze zbyt dużej ilości magii , nieoczekiwanego zachowania i dużej krzywej uczenia się. Istnieją inne frameworki, które są bardziej skoncentrowane na prostocie i pozwolą ci kontrolować.
myBatis jest jednym z nich, mój projekt MentaBean jest kolejnym. Napisałem o tym post na blogu , który może pomóc.
źródło
Użyłem Hibernacji do projektu ładowania i transformacji danych 5 lat temu przy użyciu Hibernacji 3 i pomyślałem, że to cudowne. Robię małą aplikację e-commerce, próbowałem użyć Hibernacji 4 i byłem bardzo rozczarowany. Usunęli narzędzia i ściśle zintegrowali z IDE. Wypróbowałem MyBatis i wszystko działam w ciągu jednej nocy i jestem bardzo zadowolony z tego, jak łatwo można zintegrować z aplikacją. Myślę, że Hibernacja stała się zbyt rozdęta i w tym momencie użyłbym EJB 3 zamiast Hibernacji.
źródło