1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/liheng-easy-jdbc

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

jujube-jdbc

Это простой ORM-фреймворк, который объединяет преимущества Mybatis и JPA, упрощая разработку постоянного слоя.

Часть 1: Мотивация

Когда у нас возникает идея создать собственный продукт, это обычно происходит потому, что существующее программное обеспечение не удовлетворяет наши потребности. В области Java для разработки постоянного слоя есть несколько популярных вариантов. У каждого из них есть свои недостатки.

  1. Spring JDBC: Это очень простой слой обёртки над JDBC, который удобен и лаконичен. Однако недостатком является необходимость писать SQL вручную, что приводит к снижению эффективности и усложнению управления.

  2. JFianl Model: Он идеально подходит для теории JFinal, будучи лаконичным до предела. Проблема в том, что его сложно выделить и использовать отдельно, а также требуется большое количество ручного написания SQL.

  3. Hibernate: Этот фреймворк всегда был выдающимся, с момента своего появления он сиял золотым светом. Его уникальная объектно-реляционная модель базы данных делает его привлекательным. Однако явным недостатком является слабость в объединённых запросах.

  4. Spring JPA: Эта мощная функция синтаксического анализа имён методов позволяет повысить эффективность до максимума. Недостаток аналогичен Hibernate.

  5. Mybatis: Освобождает от сложности Hibernate, делая постоянный слой более свежим. Недостатком является то, что если вы не хотите отказываться от огромных преимуществ JPA, как решить эту проблему?

  6. Speedment: С ростом популярности микросервисов, CQRS и функционального программирования, Speedment также набирает популярность. Можно рассматривать его как продвинутую версию Hibernate. Недостатком остаётся необходимость ручного написания логики запросов.

Из всех этих фреймворков Spring JPA кажется мне наиболее удобным. Простое написание имени метода позволяет завершить логическую разработку программы. Эта особенность действительно привлекает внимание. Однако объединённые запросы в JPA вызывают затруднения, и использование select * не обеспечивает высокую эффективность.

Чтобы решить эту проблему, я решил разработать свой собственный фреймворк на основе идей Mybatis и Spring Data Jpa, используя Spring-JDBC в качестве основы.

Часть 2: Пример

Давайте посмотрим на результаты. Пример проекта находится в easy-jdbc-sample, где используется Spring Boot + H2 для запуска. Рассмотрим тестовый код:

@SpringBootTest(classes = JujubeJdbcApp.class)
@RunWith(SpringRunner.class)
@ActiveProfiles({"test"})
public class UserDaoTest {
    @Autowired
    private UserDao userDao;

    @Test
    public void findNameById() {
        String name = userDao.findNameById(1);
        assertThat(name).isEqualTo("百度");
    }

    // Другие тесты опущены для краткости
}

Теперь рассмотрим наш UserDao, который очень лаконичен:

public interface UserDao extends BaseDao<User, Long> {

    @Override
    default String getTableName() {
        return "user";
    }

    public String findNameById(long id);

    // Другие методы опущены для краткости

}

Методы Dao, такие как find и getCount, наследуют магию Spring JPA: динамическое создание запросов на основе имён методов. Что касается разбиения на страницы, то здесь необходимо вручную написать SQL, о чём мы поговорим позже.


В методах UserDao нет комментариев, так как это соглашение важнее конфигурации. Когда вы понимаете правила построения имён методов, вы знаете, что означают эти атомарные операции.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/liheng-easy-jdbc.git
git@api.gitlife.ru:oschina-mirror/liheng-easy-jdbc.git
oschina-mirror
liheng-easy-jdbc
liheng-easy-jdbc
master