Hibernate, Spring и имена таблиц, полей базы данных.

Эх, давно не брал я в руки шашку. (с) Василий Иванович

Пришлось и мне встать на тропу микросервисов. Поскольку java основной язык программирования, то в качестве платформы был выбран Spring. Начинаю потихоньку копать этот фреймворк.

Досталась мне в наследство базёнка, в которой имена таблиц и полей начинаются с большой буквы. Типа: Notes, NotesIndex и т.п.

Настраиваю spring JPA, все как в примере работы с MySQL. Только в отличии от примера использую готовую таблицу. Проверку опять же:

spring.jpa.hibernate.ddl-auto=validate

Описываю сущности. Причем понимаю, что название таблиц и полей нестандартное, явно указываю имена:

@Data
@Entity
@Table(name = "Notes")
public class Notes {
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(name="NoteIndex")
  private int noteIndex;

Запускаю приложение и ловлю ошибку:

nested exception is org.hibernate.tool.schema.spi.SchemaManagementException: Schema-validation: missing table [notes]

Вот засада! Я ведь явно указал имя таблицы. Долго копался в интернетах и нашел решение: необходимо явно определить стратегию именования, иначе не реагирует оно на мои имена таблиц.

spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

Не ожидал я такой засады от Java

Я, не то чтобы часто, но как минимум раз в полгода пишу всякие утилитки и приложения на java. В основном клиенты к BD на десктоп. В качестве основного инструмента пользуюсь JavaFX.

И вот, поменял себе железо, начал ставить софт, в том числе и IDE для разработки. Ну и заодно решил попробовать 11-ю (да и 12-ю) версию SDK. Открываю старый проект, дописать пару фишек. А он не работает. IDE подчеркивает красным все что связано с JavaFX.

Вобщем, пока я был в танке, они выпилили JavaFX из java! Не, ну С… (Стабильность).

Оно конечно есть проект Open JavaFX, продвигаемый достойной компанией. Но мне теперь придется кучу проектов переделывать, что бы все заработало! Ну не уроды эти Ораклы?

Так что, пока остаюсь на 8-й жабе. Но уже как то не уютно стало мне в этой среде.

VirtualBox Создание машины из командной строки.

Почти дописал систему управления несколькими серверами VirtualBox. Включил основные моменты, связанные с управлением. Получается как то так:

Но, что то пока лениво писать процедуру создания виртуальной машины. Поэтому создаю их в командной строке. Благо делать это надо только один раз. Все остальное можно из интерфейса.

А теперь, собственно как создавать виртуалку в командной строке.

# создаём виртуальную машину 
VBoxManage createvm —name «BaseOS» —register

# Определяем параметры виртуальной машины
VBoxManage modifyvm «BaseOS» —ostype RedHat_64 —cpus 2 —memory 6144 —description «Базовая машина» —boot1 dvd —audio none —vrde on —vrdeproperty «TCP/Ports=3395»

VBoxManage modifyvm «BaseOS» —vram 32 —acpi on —ioapic on

# Узнаём название интерфейса, на котором будем делать бридж
VBoxManage list bridgedifs

# Получаем, что то типа:
# Name:            Realtek PCIe GBE Family Controller
# GUID:            7acd035c-f2b6-4b03-863c-a4fb311ae5f3
# Нам нужно имя (Name)

# Подключим Ethernet адаптер
VBoxManage modifyvm «BaseOS» —nic1 bridged —bridgeadapter1 «Realtek PCIe GBE Family Controller»

# Создаём диск виртуальной машины
VBoxManage createmedium —filename /home/VMs/BaseOS/BaseOS.vdi —size 10000

# Добавляем контроллер к машине
VBoxManage storagectl «BaseOS» —name SATA —add sata 

# Присоединяем жесткий диск к контроллеру
VBoxManage storageattach «BaseOS» —storagectl SATA —port 0 —type hdd —medium /home/VMs/BaseOS/BaseOS.vdi

# Добавляем IDE контроллер, к которому можно будет присоединять образ DVD
VBoxManage storagectl «BaseOS» —name IDE —add ide

# Присоединяем dvd образ
VBoxManage storageattach «BaseOS» —storagectl IDE —port 1 —device 0 —type dvddrive —medium /home/VMs/CentOS-7-x86_64-DVD-1611.iso

Осталось только запустить машину 🙂 Можно из интерфейса, можно из командной строки

VBoxManage startvm «BaseOS»—type headless

VirtualBox API

Накидал на java скелет системы управления виртуальными машинами VirtualBox. Странно, но все работает 🙂  Буду потихоньку облагораживать и наращивать возможности.

Заодно воскресил в своей памяти JavaFX.