How do I hide fields based on other field's value?
This can be handled via AdminPresentation annotations.
https://www.broadleafcommerce.com/docs/core/current/broadleaf-concepts/admin/admin-metadata-overrides
In the extended class's fields, you can use the AdminPresentation's showIfFieldEquals field.
https://github.com/BroadleafCommerce/BroadleafCommerce/blob/broadleaf-5.2.5-GA/common/src/main/java/org/broadleafcommerce/common/presentation/AdminPresentation.java#L389
You can do something like the following (which we use in AdvancedProductImpl).
@AdminPresentation(friendlyName = "AdvancedProduct_hasChildProductAddOns", group = GroupName.General, order = FieldOrder.URL + 2000, defaultValue = "false", showIfFieldEquals = { @FieldValueConfiguration( fieldName = "embeddableAdvancedProduct.type", fieldValues = { "PRODUCT", "BUNDLE" }) })